如何添加构建选择器作为参数?

How to add a build selector as a parameter?

我有两份工作:

  1. 构建作业
  2. 部署作业

我将第一个作业中生成的工件 (jars) 复制到第二个作业中,并将它们部署到环境中。

properties([
  parameters(
    [
      string(
        name: 'buildnumber',
        description: 'Buildnumber to deploy'
      ),
      choice(
        name: 'env',
        choices: ['qa', 'stage', 'prod'],
        description: 'Environment where the app should be deployed'
      )
    ]
  )
])

node{

    stage('Copy artifacts'){
          copyArtifacts(projectName: 'my-demo-build-job/master', selector: specific(params.buildnumber))

    }
    stage('Deploy'){
        sh 'Deploying to the specified environment '
    }
}

有了这个,我必须手动检查 latest/successful 构建并将其作为参数。有没有一种方法可以让我们获得一个下拉列表,其中所有成功的构建都按构建编号排序,作为其他作业的选择器?

您可以使用 Extended Choice Parameter Plugin 在 groovy 脚本的帮助下实现您想要的。
您需要定义 Single Select 类型的扩展选择参数,作为值的来源选择 Groovy Script ,并作为 groovy 脚本使用如下内容:

def job = jenkins.model.Jenkins.instance.getItemByFullName('my-demo-build-job/master')
return job.builds.findResults{
    it.result == hudson.model.Result.SUCCESS ? it.getNumber().toInteger() : null
}

此脚本将遍历已配置作业的所有构建并仅过滤出成功的构建 - 将作为参数的 select-list 选项返回。
管道中的配置如下所示:

properties([
        parameters([
                extendedChoice(name: 'buildnumber', type: 'PT_SINGLE_SELECT', description: 'Buildnumber to deploy', visibleItemCount: 10, groovyScript:
                        '''def job = jenkins.model.Jenkins.instance.getItemByFullName('my-demo-build-job/master')
                           return job.builds.findResults { it.result == hudson.model.Result.SUCCESS ? it.getNumber().toInteger() : null }''',
                choice(name: 'env', choices:  ['qa', 'stage', 'prod'], description: 'Environment where the app should be deployed'),
        ])
])