我有上游工作轮询 SVN 的变化。如果检测到更改,则开始构建。构建完成后,上游项目调用下游项目进行测试。我正在使用“触发参数化构建”。
我希望下游项目能够发送一封电子邮件,其中包含测试结果和导致构建/测试的 SVN 更改。但问题是,如果我在下游使用 ${CHANGES} 变量,它似乎是空的。
如何将 ${CHANGES} 从上游项目传递到下游项目?
我有上游工作轮询 SVN 的变化。如果检测到更改,则开始构建。构建完成后,上游项目调用下游项目进行测试。我正在使用“触发参数化构建”。
我希望下游项目能够发送一封电子邮件,其中包含测试结果和导致构建/测试的 SVN 更改。但问题是,如果我在下游使用 ${CHANGES} 变量,它似乎是空的。
如何将 ${CHANGES} 从上游项目传递到下游项目?
您可以使用 groovy 脚本获取更改集或所需的值:
def jenkins = Jenkins.getInstance()
def job = jenkins.getItem(jobName)
def bld = job.getBuildByNumber(buildNumber)
def changeSet = bld.getChangeSet()
然后它取决于您使用的 scm 插件,例如使用 git-plugin 您可以:
获取每个更改的修订:
changeSet.each{
println it.getRevision()
}
获取每次更改的消息:
changeSet.each{
println it.getMsg()
}
获得受影响的路径:
changeSet.each{
println it.getAffectedPaths()
}
获取作者姓名:
changeSet.each{
println it.getAuthorName()
}
还有更多动作
我看到了一个更新更改页面的所有更改插件。不知道 $Changes 是否也填充了该信息。
如果这不起作用,请查看Get access to Build Changelog in Jenkins