将 git 更改传递给一个文件,以便在以后的 Jenkins 作业中使用

Passing git changes to a file for use in later Jenkins jobs

环境
我在 Jenkins 中有一系列工作,其中工作 #1 是初始构建,工作 #n 是部署到生产环境。

只连接前几个作业,所有作业都参数化。

我只构建一次,如果构建成功 post 构建步骤会触发一个作业,将该构建部署到开发人员。

部署到开发后,我必须手动转到 Jenkins 并单击 运行 作业以部署到下一个 region/environment。

问题
我能够成功地将 $GIT_COMMIT 传递给下游作业,因为在作业期间作为基于工作区的环境变量-运行 我可以将它写入文件供以后使用。

但是,$CHANGES 是一个 email-ext 特定变量,我在将其内容写入文件时遇到问题,我可以传递给下游作业以跟踪当前构建正在部署的内容给定的环境。

我对 Groovy 的不熟悉和我的弱点 Google-fu 使得尝试 pre-send scriptpost-send script 很难获得我想要传递给下游作业的数据。

我尝试了什么
有效方法

什么不起作用

我没试过的东西
我已经看到 suggestions to use 由 SCM 进程注册的变更日志,它显然记录在 XML 中,如果要将其格式化以包含在HTML 电子邮件。

帮助
如果有人对下一步尝试有任何建议,我将不胜感激。我正在拔头发。

您可以使用此 groovy 脚本访问同一 jenkins 实例上任意作业的构建环境参数。

要执行脚本,您必须安装 groovy 插件并将脚本作为系统 groovy 脚本执行。

import jenkins.model.Jenkins

job = Jenkins.instance.getJob("freestyle-test")
numbuilds = job.builds.size()
if (numbuilds == 0) { return }
lastbuild = job.builds[numbuilds - 1]
println 'JOB: ' + job.fullName
println ' -> lastbuild: ' + lastbuild.displayName + ' = ' + lastbuild.result
println ' -> lastbuild someEnv: ' + build.environment.get("SOME_ENV")

与作业的耦合是通过作业名称进行的。 所选版本是最新的。