在 Jenkins 中部署提升的构建

Deploy promoted builds in Jenkins

我有两个 Jenkins 任务,一个构建和提升成功的构建,另一个任务部署那些提升的构建。我正在使用两个插件来完成此任务,Copy Artifact Pluginpromoted builds.

我必须构建代码的工作是一项非常标准的工作,我每分钟都会去 git 存储库检查是否有任何更改,如果有任何更改,我只是 Build 步骤上调用 Gradle Script 和 select Use Gradle Wrapper盒子,一切都没有问题。此构建任务的唯一自定义部分是我正在使用 promoted builds 插件,它运行良好并且具有非常标准的配置。

Build Configuration

我对 Build 任务很满意,但是 Deploy 任务有问题。在我的 deploy 任务中,我想 select 我想部署哪个提升的构建,但我无法部署 selected 提升的构建。

在我的部署任务中,我勾选了这个项目是参数化的框,我select编辑了提升构建参数.

Promoted Build Parameter Configuration

配置看起来不错,当我 运行 Deploy 任务时,我可以 select 我想部署哪个版本。

Select build to be deployed

我遇到的问题是当我select从另一个项目复制工件时。在 Which build I select Specified by a build parameter and for the Parameter Name I select编辑了我给 Promoted 构建参数

的相同名称

Copy artifacts from another project Configuration

但是当我 运行 这个 Deploy 任务时我得到这个错误:ERROR: Unable to find a build for artifact copy from: Aurora.

BUT 如果我将 Which build 部分更改为 Copy from WORKSPACE of latest completed build 一切正常

Working Configuration

我在这个配置中做错了什么?

我能够解决这个问题,我认为这不是最干净的方法,但最终它奏效了。在 Build 任务中我保留了所有内容,我只添加了一个 Post-Build ActionArchive工件.

Post Build Action

Deploy 任务中,我需要更改更多内容。在我的 Deploy 任务中,我勾选了 This project is parameterised 框,我 selected Promoted Build Parameter,这一步的配置是一个非常标准的,我只是 selected Build 项目,其余的是自动的。此步骤使我能够 select 提升我要部署的构建,但这是大问题所在。这个"step"returns的值是这样的https://site.name.com/job/ProjectName/137/

此创建的问题在于从另一个项目复制工件。我需要一个内部版本号,但我只有那个 URL,所以我找到的解决方案是从那个 URL 中获取内部版本号,注入那个数字作为局部变量并在接下来的步骤中使用该局部变量。

Build steps

使用此解决方案,我只能部署升级后的版本。