Jenkins中的参数列表显示来自另一个构建的构建号列表

Sha*_*aun 6 jenkins jenkins-plugins

我有两个Jenkins构建,一个用于编译,一个用于部署.

开发人员希望能够在运行部署构建时从编译器构建中选择构建,而不是始终运行最新构建.

我所追求的是一种为部署构建填充选择参数的方法,其中包含来自编译构建的成功\不稳定构建的列表.

然后,我将使用参数中列出的选项来部署该工件.

slo*_*low 9

使用动态参数插件

在你的推广工作中:

  • [x]此构建已参数化
  • 添加参数
  • 动态选择参数
  • 将名称设置为任何
  • 在下面粘贴到选择脚本中
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 }
Run Code Online (Sandbox Code Playgroud)

维基页面的屏幕截图:

截图


OMK*_*VAN 5

由于动态参数插件无法再访问。您可以在 Jenkins 中使用Active Choice 参数插件。现在,您可以将所有成功的 Jenkins 构建列为 Jenkins 作业/管道中的参数化选项

按照以下步骤访问成功作业列表 [作为下拉列表]

  1. 在作业配置[常规部分]中选择该项目已参数化

  2. 选择添加参数作为“主动选择参数”

  3. 给参数命名

  4. 选择 groovy 脚本并将以下代码粘贴到 groovy 脚本文本框中

    return jenkins.model.Jenkins.instance.getJob('<Jenkins-job>').builds.findAll{ it.result == hudson.model.Result.SUCCESS }.collect{ "$it.number" }

  5. 没有 powershell 和 BASH 就可以很好地工作

  6. 无需处理 Jenkins API 和过滤 JSON 输出

  • groovy 脚本的更通用版本: `return jenkins.model.Jenkins.instance.getItemByFullName('&lt;folder&gt;/&lt;job&gt;').builds.findAll{ it.result == hudson.model.Result.SUCCESS }.collect{ it.displayName[1..-1] }` (3认同)

Dav*_*her 0

一种选择是使用升级构建插件来标记要部署的特定构建。这会将选择从部署构建移至编译构建。在编译构建中选择“在...时升级构建”选项,并设置您希望升级的工作方式。开发人员可以选择(或自动化)要推广的构建。在部署构建中,Copy Artifact 插件可以获取适当的构建(基于最新升级构建的永久链接)。