Jenkinsfile (Groovy) にこのようなものがあり、後で情報を使用するために、stdout と終了コードを変数に記録したいと考えています。
sh "ls -l"
内部では Groovy コードを一切実行できないようなので、どうすればこれを実行できるのでしょうかJenkinsfile
?
ベストアンサー1
パイプライン ステップの最新バージョンでは、sh
次の操作を実行できます。
// Git committer email
GIT_COMMIT_EMAIL = sh (
script: 'git --no-pager show -s --format=\'%ae\'',
returnStdout: true
).trim()
echo "Git committer email: ${GIT_COMMIT_EMAIL}"
もう一つの特徴はreturnStatus
オプションです。
// Test commit message for flags
BUILD_FULL = sh (
script: "git log -1 --pretty=%B | grep '\\[jenkins-full]'",
returnStatus: true
) == 0
echo "Build full flag: ${BUILD_FULL}"
これらのオプションは、これ問題。
公式を見るドキュメンテーションコマンド用sh
。
script
宣言型パイプラインの場合 (コメントを参照)、コードをステップにラップする必要があります。
script {
GIT_COMMIT_EMAIL = sh (
script: 'git --no-pager show -s --format=\'%ae\'',
returnStdout: true
).trim()
echo "Git committer email: ${GIT_COMMIT_EMAIL}"
}