小编典典

如何在Jenkins的另一份工作中提升特定的内部编号?

Jenkins

我安装了Promoted Build PluginfromJenkins,现在在从现有工作中升级构建时遇到了一些麻烦。这是方案:

现有Nightly Build一项工作每天晚上运行,运行所需的所有测试和指标;

现有Deploy Build一个接受参数$ {BUILD_NUMBER}并部署具有对应$ {BUILD_NUMBER}Nightly Build

[Nightly Build]运行并成功构建了工件#39现在,我可以运行传入#39作为参数的[Deploy Build][Nightly Build]#39中的工件将被部署
到目前为止,一切都很好。现在是我要添加Build Promotions…的部分

这正是我需要实现的

有没有一种方法可以从中推广Nightly Build #39(注意它已经在以前构建了)Deploy Build?也许甚至从其他地方来,坦率地说,我在这里有点迷路了:(

我看不到它们之间具有清晰的上游/下游关系,因为它们没有一个:始终运行此构建,然后在执行过程中再运行另一个-[Deploy Build]有时仅执行,而不总是在[Nightly]之后执行构建]。


阅读 400

收藏
2020-07-25

共1个答案

小编典典

自2.23版的参数化触发器插件的更新:
在版本2.23及更高版本中,行为已更改(感谢AbhijeetKamble指出)。调用(构建)作业的“ 预定义参数”部分传递的任何参数都必须存在于被调用(部署)作业中。此外,受调用作业参数的限制适用,因此,如果被调用作业参数是一个选择,则必须预先填充所有可能的值(来自促销)。或者只使用Text参数类型。

是的,我有完全相同的设置:构建作业(基于SVN提交)和手动执行的部署作业。当用户从构建作业中选择任何构建(包括较早的构建)时,他们可以转到Promotion Status链接并执行各种部署提升,例如Deploy到DEV,Deploy到QA等等。

以下是在构建作业上设置升级的方法:

  • 您将需要以下插件:参数化触发器插件,升级构建插件
  • 您还需要为此构建作业设置默认的“ Archive Artifacts构建后”操作。
  • 复选标记Promote构建时
  • 定义名称 “部署到DEV”
  • 在“ 标准”下选中标记,仅当手动批准时
  • 在“ 操作”下,使用在其他项目上的触发器/调用构建
  • 在“ 要构建的项目”中,在此处输入部署作业的名称
  • 选中“ 阻止”,直到触发的项目完成构建
  • 如果触发的版本更差或等于:将此版本标记为失败:FAILURE(根据部署作业的状态进行调整)
  • 预定义参数 (代码A)
    代码A:
Server=IP_of_my_dev_server`  
Job=$PROMOTED_JOB_NAME`  
BuildSelection=<SpecificBuildSelector><buildNumber>$PROMOTED_NUMBER</buildNumber></SpecificBuildSelector>

在上方的“ 预定义参数”部分中,=左侧的名称是在部署作业中定义的参数。=右边是执行促销时将分配给这些参数的值。定义三个参数ServerJobBuildSelection

该参数Server=是我自己的,因为我的部署作业可以部署到多个服务器。但是,如果将您的部署作业硬编码为始终部署到特定位置,则不需要。

Job=参数是必需的,但帕拉姆的名称取决于你在什么已经安装部署工作(我将解释结构中,有)。该值$PROMOTED_JOB_NAME必须保持原样。这是升级过程可以识别的环境变量,并指向您的构建作业的名称(配置了升级过程的名称)

BuildSelection=参数是必需的。这整个行必须保持原样。传递的值为$PROMOTED_NUMBER,促销再次意识到了这一点。在您的示例中,它将为#39。

该块,直到触发项目完成他们建立对勾将会使推广过程中等待,直到部署工作完成。如果没有,升级过程将触发部署作业并成功退出。等待部署作业完成的好处是,如果部署作业失败,促销明星也将被标记为失败。

(一个小注的位置:推广的星号会成功,而在部署,运行作业如果有部署失败,则只会在后更改失败部署。完成工作逻辑......但可以有点混乱,如果你在部署完成之前查看促销明星)

这是设置部署作业的方法
您将需要复制工件插件
在此构建参数化下
使用名称配置类型为Choice(或Text)的参数(此名称必须与上一节中促销的“ 预定义参数”中的配置匹配) Server
选择:输入上一部分中促销的“ 预定义参数”将使用的可能服务器IP的列表(请参阅下面的更新说明)
使用名称配置类型为Choice(或Text)的参数(此名称必须与上一节中促销的“ 预定义参数”中的配置匹配) Job
选择:输入您的构建作业的名称作为默认名称。仅当您手动触发部署作业时才需要。当升级触发部署任务时,升级将提供值(Job=来自我们配置的Predefined参数)。此外,如果促销的Predefined参数没有传递任何值,则将使用首选值。如果构建作业和部署作业之间具有一对一的关系,则可以Job=在推广的配置中省略该参数。
更新: 自2.23版的ParameterizedTrigger以来,部署作业配置中的可用选项必须具有来自促销的预定义参数的所有可能值。如果您不希望使用此限制,请使用“文本”代替“选择”
配置类型的参数构建选择了复制神器带的名字:BuildSelection
默认选择器:最新成功构建
在构建步骤下
配置来自另一个项目的复制工件
在项目名称中输入${Job}
在哪个构建选择Specified by a build parameter
在“ 参数名称”中输入BuildSelection(不带${...}!
为将要从构建作业复制到部署作业的工作空间的工件相应地配置其余部分
根据需要在部署作业中使用复制的工件,以便进行部署
因此,现在,通过上述部署作业,您可以手动运行它,并从要部署的构建作业中选择要构建的构建号(上次构建,最后成功,按构建号等)。您可能已经对它进行了非常相似的配置。在推广上的构建工作将基本执行相同的事情,并提供版本号的基础上,在执行了什么推广。

如果说明有任何问题,请告诉我。

2020-07-25