Parameter List in Jenkins to display list of build numbers from another build

让人想犯罪 __ 提交于 2020-08-24 06:57:27

问题


I have two Jenkins builds, one for compiling and one for deploying.

The developer wants to be able to choose a build from the compiler build when running the deploy build, not always run the most recent build.

What I am after is a method of populating a choice parameter for the deploy build with a list of successful\unstable builds from the compile build.

I will then use the the option listed in the parameter to deploy that artifact.


回答1:


One option is to use the Promoted Builds plugin to mark a specific build to be deployed. This moves the choice from the deployment build into the compilation build. Select the Promote builds when... option in the compilation build and set up how you want promotion to work. The developer could choose (or automate) the build to promote. In the deployment build, the Copy Artifact plugin can grab the appropriate build (based on a permalink to the latest promoted build).




回答2:


Using the Dynamic Parameters plugin

In your promote job:

  • [x] This build is parameterized
  • Add Parameter
  • Dynamic Choice Parameter
  • Set Name to whatever
  • Paste below into Choices Script
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 }

Screenshot from wiki page:

Screenshot




回答3:


As far as I know, it is not possible to populate the choice parameter. However, you don't need to always use the newest build. I assume that you use the copy artifact plugin. This plugin provides the "Build selector for Copy Artifact" parameter. You still need to enter the build number manually, but when deploying you have all the standard choices, like "Latest successful build", but also "Specific Build". You need to enter the number and don't have a drop down, but I got my deployers trained well enough to enter the build number.




回答4:


As Dynamic Parameters plugin is no more accessible. You can use Active Choice parameter plugin in Jenkins. Now you can list all successful Jenkins builds as parameterized option in Jenkins Job/pipeline

Follow below steps to access the list of successful jobs [as dropdown list]

  1. In job configuration [General section] select this project is parameterized

  2. Select add parameter as "Active choice parameter"

  3. Give name for parameter

  4. Select groovy script and paste below code in groovy script text box

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

  5. It worked awesome without without powershell and BASH

  6. No need to process Jenkins API and filter JSON output



来源:https://stackoverflow.com/questions/19135280/parameter-list-in-jenkins-to-display-list-of-build-numbers-from-another-build

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!