Jenkinsfile (groovy) を使用して実行されたシェルコマンドの出力を変数に取得するにはどうすればよいですか? 質問する

Jenkinsfile (groovy) を使用して実行されたシェルコマンドの出力を変数に取得するにはどうすればよいですか? 質問する

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}"
}

おすすめ記事