如何从Jenkins的其他工作中推广特定版本号?

我从Jenkins安装了Promoted Build Plugin ,现在我正面临着一些麻烦,要从现有的工作中推广构build。 这是情景:

  1. 现在有一个Nightly Build运行的Nightly Build作业,运行所有需要的testing和指标;

  2. 有一个现有的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> 

以上,在“ 预定义的参数”部分中,=左边的名称是在您的部署作业中定义的参数。 并且在=的右边是执行这个升级时将被分配给这些参数的值。 定义三个参数ServerJobBuildSelection

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

Job=参数是必需的,但参数的名字取决于你在你的部署工作中设置了什么(我将在那里解释configuration)。 $PROMOTED_JOB_NAME的值必须保持不变。 这是一个环境variables,升级过程知道并返回到您的构build作业的名称(configuration升级过程的名称)

BuildSelection=参数是必需的。 整条线路必须保持原样。 传递的值是$PROMOTED_NUMBER ,再次提升是知道的。 在你的例子中,这将是#39

阻塞直到触发项目完成构build复选标记将使升级过程等待,直到部署作业完成。 否则,升级过程将触发部署工作,并成功退出。 等待部署工作完成有部署工作失败的好处,促销明星也将被标记为失败。

(这里有一点需要注意:在部署工作正在运行的时候 ,升级星将会显示成功如果发生部署失败,只有在部署工作完成后才会变成失败,逻辑…但是如果你有点混乱在部署完成之前查看促销明星)

以下是如何设置部署作业

  • 你将需要复制文物插件
  • 此构build下参数化
  • 使用名称 Serverconfigurationtypes为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}
  • 哪个版本中selectSpecified by a build parameter
  • 参数名称中inputBuildSelection (不带${...} !)
  • 相应地configuration剩余的工件,这些工件将从构build作业复制到部署作业的工作空间
  • 根据需要在部署作业中使用复制的工件以便部署

所以,现在,通过上面的部署工作,您可以手动运行它,并从您想要部署的构build作业(最后构build,最后成功构build编号等)中select构build编号。 您可能已经configuration非常类似。 build设工作的推广基本上会执行同样的事情,并根据执行的是什么促销来提供build设编号。

让我知道如果你有任何问题的指示。

Interesting Posts