我有两个 Jenkins 版本,一个用于编译,一个用于部署。
开发人员希望能够在运行部署构建时从编译器构建中选择一个构建,而不是总是运行最新的构建。
我所追求的是一种为部署构建填充选择参数的方法,其中包含来自编译构建的成功\不稳定构建列表。
然后,我将使用参数中列出的选项来部署该工件。
我有两个 Jenkins 版本,一个用于编译,一个用于部署。
开发人员希望能够在运行部署构建时从编译器构建中选择一个构建,而不是总是运行最新的构建。
我所追求的是一种为部署构建填充选择参数的方法,其中包含来自编译构建的成功\不稳定构建列表。
然后,我将使用参数中列出的选项来部署该工件。
使用动态参数插件
在您的推广工作中:
import jenkins.model.Jenkins
import hudson.model.AbstractProject
import hudson.model.Result
import hudson.util.RunList
AbstractProject<?, ?> otherJob = Jenkins.getInstance().getItemByFullName("otherJobName", AbstractProject.class)
RunList<?> builds = otherJob.getBuilds().overThresholdOnly(Result.SUCCESS)
def list = builds.limit(5).collect { it.number }
维基页面截图:
因为动态参数插件不再可用。您可以在 Jenkins 中使用Active Choice 参数插件。现在您可以在 Jenkins Job/pipeline 中列出所有成功的 Jenkins 构建作为参数化选项
按照以下步骤访问成功作业列表 [作为下拉列表]
在作业配置[General section]中选择这个项目是参数化的
选择添加参数作为“主动选择参数”
为参数命名
选择 groovy 脚本并将下面的代码粘贴到 groovy 脚本文本框中
return jenkins.model.Jenkins.instance.getJob('<Jenkins-job>').builds.findAll{ it.result == hudson.model.Result.SUCCESS }.collect{ "$it.number" }
没有 powershell 和 BASH 的情况下它工作得很棒
无需处理 Jenkins API 和过滤 JSON 输出
据我所知,不可能填充选择参数。但是,您不需要总是使用最新版本。我假设您使用复制工件插件。此插件提供“复制工件的构建选择器”参数。您仍然需要手动输入内部版本号,但是在部署时您可以选择所有标准选项,例如“最新成功构建”,还有“特定构建”。您需要输入编号并且没有下拉菜单,但我让我的部署人员训练有素,可以输入内部版本号。
一种选择是使用Promoted Builds 插件来标记要部署的特定构建。这将选择从部署构建转移到编译构建。在编译构建中选择提升构建时...选项并设置您希望提升的工作方式。开发人员可以选择(或自动化)要推广的构建。在部署构建中,Copy Artifact 插件可以获取适当的构建(基于指向最新升级构建的永久链接)。