jenkins pipelineでジョブを作成中、スクリプトの実行結果を変数として取得して使用したかったのですが意外と方法が分からず、調べた結果のメモとして記録します。
pipeline {
agent any
environment {
TARGET_DATE = ""
}
stages {
stage('test') {
steps {
script {
def result = sh (
script:"date --date '7 day ago' +%Y%m%d",
returnStdout:true
)
TARGET_DATE = result
echo "${TARGET_DATE}"
// 20230707
}
}
}
}
}
script{}
内に関数を定義し、returnStdout:true
にすることでスクリプトの実行結果が取得でき、グローバル変数が更新されました。
ちなみに次のようにreturnStatus:true
にすると終了コードが取得できます。
pipeline {
agent any
stages {
stage('test') {
steps {
script {
def result = sh (
script:"date --date '7 day ago' +%Y%m%d",
returnStatus:true
)
if (result != 0) {
error("FAILED to get date.")
}
}
}
}
}
}