如何从Jenkins的其他工作中推广特定版本号?
我从Jenkins
安装了Promoted Build Plugin
,现在我正面临着一些麻烦,要从现有的工作中推广构build。 这是情景:
-
现在有一个
Nightly Build
运行的Nightly Build
作业,运行所有需要的testing和指标; -
有一个现有的
Deploy Build
接受参数$ {BUILD_NUMBER},并从Nightly Build
部署具有相应$ {BUILD_NUMBER}的Nightly Build
- 说[Nightly Build](夜间构build)运行并成功构build了工件#39
- 现在我可以运行在#39传递的[Deploy Build]作为参数
- 来自[Nightly Build]#39的文物将被部署
到现在为止还挺好。 现在是我想添加Build Promotions
…
有没有办法从Deploy Build
推广Nightly Build #39
( 注意之前已经构build过 )? 或者,也许甚至从别的地方,坦率地说,我是一种迷失在这里:(
我没有看到他们有明确的Upstream / Downstream关系,因为他们没有: 在执行期间总是运行这个构build,然后执行另一个 – 有时只执行[Deploy Build],并不总是在[Nightly构build] 。
更新参数化触发器插件2.23版本:
随着版本2.23+的行为改变 (感谢AbhijeetKamble指出)。 调用( 构build )作业的预定义参数部分传递的任何参数都必须存在于被调用( 部署 )作业中。 此外,所谓的作业参数的限制也适用,所以如果被叫作业的参数是一个select ,则必须预先填充所有可能的值(来自促销)。 或者只是使用文本参数types。
解
是的,我有完全相同的设置: 构build作业(基于SVN提交)和手动执行的部署作业。 当用户从构build作业(包括旧版本)中select任何构build时,他们可以转到“ 促销状态”链接并执行各种部署促销,例如部署到开发人员 , 部署到质量保证等
这里是如何设置build立工作的推广:
- 您将需要这些插件: 参数化的触发器插件 , 推荐的构build插件
- 您还需要在此构build作业上设置默认“ 存档构件”构build后操作。
- 选中标记提升构build时间
- 定义名称 “部署到DEV”
- 在标准下复选标记只有在手动批准时
- 在“ 操作”下,使用其他项目上的触发器/调用构build
- 在要构build的项目中input您的部署作业的名称
- 复选标记Block,直到触发的项目完成其构build
- 如果触发版本更差或等于 :FAILURE(根据您的部署作业的状态进行调整), 将此版本标记为失败
- 预定义的参数 (代码A)
代码A:
Server=IP_of_my_dev_server` Job=$PROMOTED_JOB_NAME` BuildSelection=<SpecificBuildSelector><buildNumber>$PROMOTED_NUMBER</buildNumber></SpecificBuildSelector>
以上,在“ 预定义的参数”部分中,=左边的名称是在您的部署作业中定义的参数。 并且在=的右边是执行这个升级时将被分配给这些参数的值。 定义三个参数Server
, Job
和BuildSelection
。
参数Server=
是我自己的,因为我的部署作业可以部署到多个服务器。 但是,如果您的部署作业被硬编码以始终部署到特定位置,则不需要这样做。
Job=
参数是必需的,但参数的名字取决于你在你的部署工作中设置了什么(我将在那里解释configuration)。 $PROMOTED_JOB_NAME
的值必须保持不变。 这是一个环境variables,升级过程知道并返回到您的构build作业的名称(configuration升级过程的名称)
BuildSelection=
参数是必需的。 整条线路必须保持原样。 传递的值是$PROMOTED_NUMBER
,再次提升是知道的。 在你的例子中,这将是#39
。
阻塞直到触发项目完成构build复选标记将使升级过程等待,直到部署作业完成。 否则,升级过程将触发部署工作,并成功退出。 等待部署工作完成有部署工作失败的好处,促销明星也将被标记为失败。
(这里有一点需要注意:在部署工作正在运行的时候 ,升级星将会显示成功,如果发生部署失败,只有在部署工作完成后才会变成失败,逻辑…但是如果你有点混乱在部署完成之前查看促销明星)
以下是如何设置部署作业
- 你将需要复制文物插件
- 在此构build下参数化
- 使用名称
Server
configurationtypes为Choice(或Text)的参数(该名称必须与在上一节中的促销预定义参数中的configuration相匹配) - 选项:在上一节中input促销的预定义参数将使用的可能的服务器IP列表( 请参阅下面的更新注释 )
- 使用
Job
名称configurationChoice(或Text)types的参数(该名称必须与前面部分的促销预定义参数中的configuration相匹配) - 选项:input您的构build作业的名称作为默认。
这仅在您手动触发部署作业时才需要。当部署作业由升级触发时,升级将提供值(来自我们configuration的预定义参数的“Job=
)。 另外,如果没有从促销的预定义参数传递的值,将使用第一个select值。 如果构build和部署作业之间有一对一的关系,则可以省略促销configuration中的Job=
参数。 - 更新: 从参数化触发器2.23版本开始 , 部署作业configuration中的可用选项必须具有来自升级的预定义参数的所有可能值。 如果你不想这个限制,使用“文本”而不是“select”
- 为 名称为
BuildSelection
Copy ArtifactconfigurationBuildselect器types的参数 - 默认select器 :最新的成功构build
- 在构build步骤下
- 从另一个项目configuration复制工件
- 在项目名称中input
${Job}
- 在哪个版本中select
Specified by a build parameter
- 在参数名称中input
BuildSelection
(不带${...}
!) - 相应地configuration剩余的工件,这些工件将从构build作业复制到部署作业的工作空间
- 根据需要在部署作业中使用复制的工件以便部署
所以,现在,通过上面的部署工作,您可以手动运行它,并从您想要部署的构build作业(最后构build,最后成功构build编号等)中select构build编号。 您可能已经configuration非常类似。 build设工作的推广基本上会执行同样的事情,并根据执行的是什么促销来提供build设编号。
让我知道如果你有任何问题的指示。