私はパイプラインジョブを実行していますが、これにより、ダウンスチームジョブにパラメーターを渡す必要がありますが、機能しません。私たちは次のように試しました:
パイプラインジョブ:
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として作成してみましたが、このフリースタイルには多くのビルドステップがあります。
呼び出し中のジョブ:
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}'
}
}
}
}
あなたのコードで正確に何が間違っているのかわかりません、間違いがあるようです。多分あなたはあなたの"$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}')]
}
}
}
}
これが役に立てば幸い