[解決済み] 宣言的なJenkinsパイプラインのステージ間で変数を渡すにはどうしたらいいですか?
2022-10-24 04:37:24
質問
宣言型パイプラインのステージ間で変数を渡すにはどうしたらよいですか?
スクリプト型パイプラインでは、一時ファイルに書き込み、そのファイルを変数に読み込むという手順があるかと思います。
宣言型パイプラインでこれを行うにはどうしたらよいでしょうか。
例:シェルのアクションで作成された変数に基づいて、別のジョブのビルドをトリガーしたいのですが。
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})]
}
}
どのように解決するのですか?
ファイルを使いたい場合(スクリプトは必要な値を生成するものなので)には、次のようにします。
readFile
を使うことができます。そうでない場合は
sh
と共に
script
というオプションがあります。
// Define a groovy local variable, myVar.
// A global variable without the def, like myVar = 'initial_value',
// was required for me in older versions of jenkins. 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.
def myVar = 'initial_value'
pipeline {
agent { label 'docker' }
stages {
stage('one') {
steps {
echo "1.1. ${myVar}" // prints '1.1. initial_value'
sh 'echo hotness > myfile.txt'
script {
// OPTION 1: set variable by reading from file.
// FYI, trim removes leading and trailing whitespace from the string
myVar = readFile('myfile.txt').trim()
}
echo "1.2. ${myVar}" // prints '1.2. hotness'
}
}
stage('two') {
steps {
echo "2.1 ${myVar}" // prints '2.1. hotness'
sh "echo 2.2. sh ${myVar}, Sergio" // prints '2.2. sh hotness, Sergio'
}
}
// this stage is skipped due to the when expression, so nothing is printed
stage('three') {
when {
expression { myVar != 'hotness' }
}
steps {
echo "three: ${myVar}"
}
}
}
}
関連
-
[解決済み] Jenkinsを手動で再起動する方法は?
-
[解決済み】Jenkinsで環境変数を設定する方法は?
-
[解決済み] WindowsでJenkinsをサービスとして起動したときに、より多くのヒープスペースを与えるにはどうしたらいいですか?
-
[解決済み] Jenkinsパイプラインの条件付きステップ/ステージ
-
[解決済み] Jenkinsは、実行するジョブの設定ファイルをどこに保存しますか?
-
[解決済み] Jenkinsのスクリプトパイプラインと宣言型パイプライン
-
[解決済み] Jenkinsパイプラインにタイムアウトステップを追加する方法
-
[解決済み] 既存のプロジェクトをコピー&ペースト(複製)するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン