我们有一个Jenkins工作,每次他们推送到存储库并将构建存储为工件(我们称之为CompileApp)时编译我们的开发人员代码。我有另一个工作,冒烟测试代码,从构建中复制最新的成功工件。但是,由于资源限制,它无法针对每个构建运行(调用此作业SmokeTest)。
所以SmokeTest定期执行,每次执行我希望能够将该作业的内部版本号设置为我复制的CompileApp工件的相同内部版本号,以便明确哪个版本经过测试。 (如果在此时间范围内没有完成构建,我还将为构建号添加时间戳)
我可以使用使用环境变量的build name setter插件设置内部版本号。但我不知道如何使用它访问CompileApp作业内部版本号。我查看了EnvInject插件,但还没有理解如何正确使用它。
非常感谢任何建议和指示。
答案 0 :(得分:6)
您可以使用COPYARTIFACT_BUILD_NUMBER_ YOUR_JOB 变量,其中 YOUR_JOB 是原始作业的名称。
答案 1 :(得分:2)
最后通过使用批处理文件命令
在CompileApp作业中编写一个小文本文件来解决我的问题echo PARENT_BUILD_NUMBER =%BUILD_NUMBER%> envVariables.txt
然后我存档了该文本文件。
然后在SmokeTest作业中,我从CompileApp复制了工件,并在构建步骤中使用EnvInject插件将其作为环境变量导入。然后有一个环境变量我使用它来使用命令
使用build name setter插件设置构建名称#$ {ENV,var =“PARENT_BUILD_NUMBER”} $ {ENV,var =“BUILD_ID”}
这个问题的答案对于解决问题How to set environment variables in Jenkins?
特别有帮助答案 2 :(得分:1)
Parameterized Trigger Plugin是您正在寻找的插件。使用此插件,您可以将当前作业的BUILD_NUMBER
传递给下游作业。
答案 3 :(得分:0)
我建议在构建作业的同一工作区中运行下游作业,并且当集成测试作业运行时,它会阻止构建作业执行。
然后,您可以触发下游冒烟测试作业,每隔5/10生成一次左右。
答案 4 :(得分:0)
查看此帖子:How to convince jenkins to share a build number for several jobs?
关键是使用"评估的Groovy脚本" EnvInject插件的功能,以获取对任何作业的引用。因此,在您的情况下,CompileApp作业可以为SmokeTestApp作业设置nextBuildNumber。