【发布时间】:2017-09-20 09:07:13
【问题描述】:
我正在尝试在 Jenkins 管道脚本中读取一些应该由 Git 插件设置的环境变量,但似乎它们没有设置,因为当我尝试在脚本中使用它的值是空字符串并且如果我使用 sh 'printenv' 我可以看到它们没有设置。
可能我遗漏了一些东西,但我找不到什么。
有什么想法吗?
【问题讨论】:
标签: git jenkins jenkins-pipeline
我正在尝试在 Jenkins 管道脚本中读取一些应该由 Git 插件设置的环境变量,但似乎它们没有设置,因为当我尝试在脚本中使用它的值是空字符串并且如果我使用 sh 'printenv' 我可以看到它们没有设置。
可能我遗漏了一些东西,但我找不到什么。
有什么想法吗?
【问题讨论】:
标签: git jenkins jenkins-pipeline
每页:
http://JenkinsURL/pipeline-syntax/globals:
GIT_COMMIT 等特定于 SCM 的变量不会自动 定义为环境变量;相反,您可以使用返回值 结帐步骤。
我相信这应该在 Jenkins 2.60 中解决:
https://plugins.jenkins.io/pipeline-model-definition
查看 JENKINS-45198 的项目
您可以通过在 shell 中运行适当的 git 命令并将它们分配给变量来解决:
GIT_REVISION = sh( script: 'git rev-parse HEAD', returnStdout: true )
在声明式管道中,您必须将其包装在 script{} 块中,并且可能在管道之外声明变量以获得适当的范围。
【讨论】:
如果你像我一样使用checkout scm,你会注意到你没有任何与 GIT 相关的环境变量来帮助你,所以在这种情况下,你需要这样做:
scm_variables = checkout scm
echo scm_variables.get('GIT_COMMIT')
【讨论】: