将作业内部版本号设置为与复制工件的作业相同

时间:2013-10-24 23:00:45

标签: jenkins jenkins-plugins

我们有一个Jenkins工作,每次他们推送到存储库并将构建存储为工件(我们称之为CompileApp)时编译我们的开发人员代码。我有另一个工作,冒烟测试代码,从构建中复制最新的成功工件。但是,由于资源限制,它无法针对每个构建运行(调用此作业SmokeTest)。

所以SmokeTest定期执行,每次执行我希望能够将该作业的内部版本号设置为我复制的CompileApp工件的相同内部版本号,以便明确哪个版本经过测试。 (如果在此时间范围内没有完成构建,我还将为构建号添加时间戳)

我可以使用使用环境变量的build name setter插件设置内部版本号。但我不知道如何使用它访问CompileApp作业内部版本号。我查看了EnvInject插件,但还没有理解如何正确使用它。

非常感谢任何建议和指示。

5 个答案:

答案 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。

相关问题