问题描述
场景: 开发人员针对master分支创建PR。 Jenkins(Cloudbees)开始构建并验证PR,并生成一个文本文件,其中包含build_info.txt文件作为工件。
当PR合并到master中时,我需要能够访问在PR验证步骤中创建的工件,提取其中包含的版本信息,并将该版本信息与PR代码更改一起提交到master中。
问题:
我已经在合并到主脚本(run_pr_merge
的过程中打印了env vars,但是我没有看到可以链接回的信息(可能在那里,我只是不认识它)到正在合并的PR作业,或者说“给我在此PR的构建和验证作业期间创建的工件”的方式
我的脚本看起来像这样:
if (isMasterBranch()) {
// run this when code is pushed to master
sh "bash ./run_pr_merge.sh" // which requires build_info.txt from PR build
} else {
// run this for each PR build
sh "bash ./build_and_validate.sh"
archiveArtifacts 'build_info.txt'
}
我对Jenkins / Cloudbees不太熟悉,因此可能会有更好的方法来构建管道来实现我所需要的内容,但是希望有一种相对简单的方法来掌握被合并为int master的PR信息。 >
已经看过copyArtifacts了,但是我不确定如何引用正在合并的PR。任何帮助都将不胜感激。
解决方法
Jenkins有一个CopyArtifact插件,可用于复制其他作业的工件。它支持“自由式”作业和管道。您需要提供工作URL,以及可选的内部版本号(默认情况下,它将使用上一次成功的内部版本)。只要具有PR号,您就可以制作工作的URL。
在我们的环境中,特定作业的URL类似于:
NullReferenceException
只要我有PR号,我就可以用例如构建所需的URL。
createdObject = null;