在Hudson中,我如何获得当前构建的git commit sha?

Sha*_*bie 34 git hudson

我们正在使用哈德森与git.我们有一个构建/测试服务器,它编译我们的项目,然后是我们需要部署的QA服务器.

我们希望得到当前构建的git commit sha并使用它来提取适当的提交以便在我们的QA服务器上进行部署.

不幸的是,似乎hudon git插件没有在环境变量中设置git commit sha(例如svn插件在SVN_REVISION中执行).我们如何解决这个问题?

指针/示例将有所帮助,因为我是哈德森诺布.

谢谢

And*_*wik 54

我添加到Post build命令:

ENV

在日志中我找到了所有环境变量.他们之中有一些是:

BUILD_TAG=jenkins-Datagen-17
JOB_URL=http://jenkins:18080/job/Datagen/
USER=jenkins
GIT_COMMIT=ce9a3c1404e8c91be604088670e93434c4253f03
JENKINS_HOME=/var/lib/jenkins
JOB_NAME=Datagen
BUILD_ID=2011-06-22_15-26-06
GIT_BRANCH=master
EXECUTOR_NUMBER=0
NODE_LABELS=master
LOGNAME=jenkins
NODE_NAME=master
BUILD_NUMBER=17
Run Code Online (Sandbox Code Playgroud)

  • 要查看所有可用的环境变量,请添加到Execute shell字段:`printenv`现在,控制台输出将显示所有可用的变量. (2认同)

Nic*_*aly 7

詹金斯版本: 2.46.2

Git 客户端: 2.4.5

下面的GIT变量可以通过运行env从命令shell

  • GIT_BRANCH
  • GIT_COMMIT
  • GIT_PREVIOUS_COMMIT
  • GIT_PREVIOUS_SUCCESSFUL_COMMIT
  • GIT_URL

因此,要将它们注入到 Job 的环境变量中,请将单词添加env到该Script Content部分...

tl;博士

Job > Configure > Build Environment > Inject environment variables to the build process > Script Content

例子

  • Jenkins-Pipelines 中有类似的东西吗? (2认同)

Som*_*era 5

可能很晚了,但是您可以使用 API 在 jenkins 上执行此操作:

https://jenkins-server/job/job-name/lastStableBuild/api/json
Run Code Online (Sandbox Code Playgroud)

这提供了一个您可以解析的 JSON 对象。您还可以使用 tree 选项来获取更精确的 JSON 字符串。像这样的东西:

https://jenkins-server/job/job-name/lastStableBuild/api/json?tree=actions[lastBuiltRevision[branch[*]]]
Run Code Online (Sandbox Code Playgroud)

现在您可以使用 awk 解析出 SHA1 和 git 分支。


Sha*_*bie 3

这对于当前版本的 git 插件显然是不可能的。相反,我们将当前头写入文件并将其保存为工件。我们稍后可以对其进行卷曲并获取与给定构建相对应的提交 ID。