web-dev-qa-db-ja.com

ジェンキンスでは、パイプラインジョブからフリースタイルジョブにパラメーターを渡す方法

私はパイプラインジョブを実行していますが、これにより、ダウンスチームジョブにパラメーターを渡す必要がありますが、機能しません。私たちは次のように試しました:

パイプラインジョブ:

node {
    parameters {
            choice(
                name: 'OS',
                choices:"Windows\nLinux\nMAC",
                description: "Choose Environment to build!")
                }
    stage('Build') {
        if("${params.Environment}" == 'Windows')
        {
       paramAValue = "${params.Environment}"
       build job: 'QA-Test-Windows',parameters: [[$class: 'StringParameterValue', name: 'ParamA', value: "$paramAValue"]]
        }
    }
    }

QA-Test-Windowsはフリースタイルジョブであり、スクリプトで次のようにパラメーターにアクセスしようとしましたが、機能しません。

Write-output "OS selected for testing is ${params.ParamA}"

Write-output "OS selected for testing is ${ParamA}"

変数にアクセスしようとしましたが、機能しません。誰かがこれについて私を助けてくれますか? QA-Test-WindowsフリースタイルジョブをPipelinejobとして作成してみましたが、このフリースタイルには多くのビルドステップがあります。

3
Geo

呼び出し中のジョブ

pipeline {
    agent any

    parameters {
        string(defaultValue: "123", description: 'This is a parameter', name: 'PARAMETER01')
    }

    stages {
        stage('Start'){
            steps{
                    build job: 'ANOTHER_JOB_NAME', wait: false, parameters: [string(name: 'HELLO', value: String.valueOf(PARAMETER01))]
            }
        }
    }
}

2番目のジョブ:

pipeline {
    agent any

    parameters {
        string(defaultValue: "", description: 'K', name: 'HELLO')
    }

    stages {
        stage('PrintParameter'){
            steps{
                sh 'echo ${HELLO}'
            }
        }
    }
}
5
Lucas Henrique

あなたのコードで正確に何が間違っているのかわかりません、間違いがあるようです。多分あなたはあなたの"$paramAValue"から{}も。ダウンストリームジョブを実行しようとしたとき

しかし、あなたが望むものに従って、私はこの実用的なソリューションをテストしました:

2つのパイプラインジョブ(上流と下流)があります。

  • ダウンストリームジョブにはOSという名前のパラメーターがあります

  • アップストリームジョブには選択パラメータPickAnOSがあります

選択したパラメーターでダウンストリームジョブを実行するアップストリームジョブの作業パイプラインスクリプトがあります

pipeline {
    agent any
    parameters {
        choice(choices: ['Windows', 'Linux'], description: 'What OS?', name: 'PickAnOS')
    }
    stages {
        stage("run downstream job") {
            steps {
                echo "You choose: ${params.PickAnOS}"
                build job: 'downstream_job', parameters: [string(name: 'OS', value: '${params.PickAnOS}')]
            }
        }
    }
}

これが役に立てば幸い

1
Sysanin