如何从Jenkins的另一个工作中提升特定的内部版本号?

Mat*_*eus 62 promotions build jenkins

我安装了Promoted Build PluginJenkins现在开始,现在我面临一些麻烦,以促进现有工作的构建.这是场景:

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

  2. 现有Deploy Build一个接受参数$ {BUILD_NUMBER}并从中部署具有相应$ {BUILD_NUMBER}的构建Nightly Build

    • 假设[夜间构建]运行并成功构建了工件#39
    • 现在我可以在#39中作为参数运行[Deploy Build]
      • 来自[Nightly Build]#39的​​工件将被部署

到现在为止还挺好.现在是我要添加的部分Build Promotions......

这正是我需要实现的目标

有没有办法推广Nightly Build #39(注意它之前已经建成)Deploy Build?或者甚至可能来自其他地方,坦率地说,我有点迷失在这里:(

我没有看到它们具有清晰的上游/下游关系,因为它们没有:始终运行此构建,然后在执行期间运行另一个 - [部署构建]有时仅执行,而不是总是在[夜间]之后执行建立].

Sla*_*lav 121

从参数化触发器插件2.23版开始更新:

版本2.23+的行为发生了变化(感谢AbhijeetKamble指出).调用(构建)作业的预定义参数部分传递的任何参数都必须存在于被调用(部署)作业中.此外,调用作业参数的限制也适用,因此如果调用作业的参数是一个选项,则必须预先填充所有可能的值(来自促销).或者只使用Text参数类型.

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

以下是如何在构建作业上设置促销:

  • 您将需要这些插件:参数化触发器插件,Promoted Builds插件
  • 您还需要在此构建作业上设置默认的Archive the Artifacts构建后操作.
  • 复选标记促销构建时
  • 定义名称 "Deploy to DEV"
  • 标准下,选中标记仅在手动批准时
  • Actions下,在其他项目上使用Trigger/call构建
  • 要构建的项目中,在此处输入部署作业的名称
  • 选中" 阻止",直到触发的项目完成构建
  • 如果触发的构建更糟或等于:FAILURE(根据部署作业的状态进行调整),请将此构建标记为失败
  • 预定义参数 (代码A)

代码A:

Server=IP_of_my_dev_server`  
Job=$PROMOTED_JOB_NAME`  
BuildSelection=<SpecificBuildSelector><buildNumber>$PROMOTED_NUMBER</buildNumber></SpecificBuildSelector>
Run Code Online (Sandbox Code Playgroud)

在上面的预定义参数部分中,=左侧的名称是在部署作业中定义的参数.在=的右边是执行此促销时将分配给这些参数的值.定义三个参数Server,JobBuildSelection.

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

Job=参数是必需的,但参数的名称取决于您在部署作业中设置的内容(我将在那里解释配置).值$PROMOTED_JOB_NAME必须保持原样.这是促销流程知道的环境变量,并引用回构建作业的名称(配置促销过程的名称)

BuildSelection=参数是必需的.整条线必须保持原样.传递的价值是$PROMOTED_NUMBER促销活动再次意识到的.在你的例子中,它会#39.

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

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

以下是如何设置部署作业

  • 您将需要Copy Artifacts插件
  • 此构建下进行参数化
  • 使用名称配置Choice(或Text)类型的参数(此名称必须与上一节中促销的预定义参数中的配置相匹配) Server
  • 选择:输入上一节中促销的预定义参数将使用的可能服务器IP列表(请参阅下面的更新说明)
  • 使用名称配置Choice(或Text)类型的参数(此名称必须与上一节中促销的预定义参数中的配置相匹配) Job
  • 选择:输入构建作业的名称作为默认名称.只有在手动触发部署作业时才需要这样做.当部署作业从推广触发,推广会提供值(在Job=预定义的参数,我们配置).此外,如果促销的预定义参数没有传递任何值,则将使用第一个选择值.如果构建部署作业之间存在一对一关系,则可以省略Job=促销配置中的参数.
  • 更新: 自参数化触发器2.23版以来,部署作业配置中的可用选项必须具有来自促销的预定义参数的所有可能值.如果您不想要该限制,请使用"文本"而不​​是"选择"
  • 配置类型的参数构建选择了复制神器的名字:BuildSelection
  • 默认选择器:最新成功构建
  • 构建步骤下
  • 从另一个项目配置复制工件
  • 项目名称中输入${Job}
  • 哪个构建选择Specified by a build parameter
  • 参数名称中输入BuildSelection(不${...}!)
  • 针对将从构建作业复制到部署作业工作区的工件,相应地配置其余工件
  • 根据需要在部署作业中使用复制的工件以进行部署

现在,通过上面的部署作业,您可以手动运行它,并从要部署的构建作业中选择哪个构建号(最后构建,上次成功,按构建号等).您可能已经将它配置得非常相似.在推广上的构建工作将基本执行相同的事情,并提供版本号的基础上,在执行了什么推广.

如果您对说明有任何问题,请与我们联系.