如何将git commit hash分配给Jenkins文件中的变量

co2*_*f2e 6 git shell groovy jenkins jenkins-pipeline

我试图将git commit hash分配给Jenkins管道中的变量,如下所示

GIT_COMMIT_HASH = sh "(git log -n 1 --pretty=format:'%H')"
Run Code Online (Sandbox Code Playgroud)

这将在Jenkins构建日志中打印提交哈希,但无法分配值.

当我尝试使用打印值时

steps{
    script {
                GIT_COMMIT_HASH = sh "(git log -n 1 --pretty=format:'%H')"

                echo "**************************************************"
                echo "${GIT_COMMIT_HASH}"
                echo "**************************************************"
    }
}
Run Code Online (Sandbox Code Playgroud)

这将导致null

我该如何分配价值?

Rob*_*les 9

你必须告诉sh脚本将stdout返回给你的脚本,而不是仅仅将它转储到stdout.

GIT_COMMIT_HASH = sh (script: "git log -n 1 --pretty=format:'%H'", returnStdout: true)
Run Code Online (Sandbox Code Playgroud)

  • 我刚用一些脚本验证了这一点.现在这是正确的语法.对不起,我应该更加小心我的复制/粘贴编辑. (2认同)
  • `git rev-parse HEAD` 是执行此操作的更快方法 (2认同)

Gre*_*cki 6

https://<your_jenkins_hostname>/env-vars.html/下有一个页面显示每个构建中可用的 env 变量列表。

它们可能取决于您的插件,但如果您在管道中使用 git,那么您可能拥有正确的插件来使GIT_COMMITenv 变量可用。