宣言パイプラインのステージ間で変数を渡すにはどうすればよいですか?
スクリプトパイプラインでは、一時ファイルに書き込み、ファイルを変数に読み込むという手順を収集します。
宣言的なパイプラインでこれを行うにはどうすればよいですか?
例えば。シェルアクションによって作成された変数に基づいて、別のジョブのビルドをトリガーしたい。
stage("stage 1") {
steps {
sh "do_something > var.txt"
// I want to get var.txt into VAR
}
}
stage("stage 2") {
steps {
build job: "job2", parameters[string(name: "var", value: "${VAR})]
}
}
ファイルを使用する場合(必要な値を生成するのはスクリプトであるため):
// Define a groovy global variable, myVar.
// A local, def myVar = 'initial_value', didn't work for me.
// Your mileage may vary.
// Defining the variable here maybe adds a bit of clarity,
// showing that it is intended to be used across multiple stages.
myVar = 'initial_value'
pipeline {
agent { label 'docker' }
stages {
stage('one') {
steps {
echo "${myVar}" // prints 'initial_value'
sh 'echo hotness > myfile.txt'
script {
// trim removes leading and trailing whitespace from the string
myVar = readFile('myfile.txt').trim()
}
echo "${myVar}" // prints 'hotness'
}
}
stage('two') {
steps {
echo "${myVar}" // prints 'hotness'
}
}
// this stage is skipped due to the when expression, so nothing is printed
stage('three') {
when {
expression { myVar != 'hotness' }
}
steps {
echo "three: ${myVar}"
}
}
}
}
単に:
pipeline {
parameters {
string(name: 'custom_var', defaultValue: '')
}
stage("make param global") {
steps {
tmp_param = sh (script: 'most amazing Shell command', returnStdout: true).trim()
env.custom_var = tmp_param
}
}
stage("test if param was saved") {
steps {
echo "${env.custom_var}"
}
}
}