一个jenkins工作的动态参数将由其他jenkins工作自动获取

时间:2015-12-11 05:06:41

标签: jenkins jenkins-plugins jenkins-workflow

我有一个jenkins作业A在构建作业时从参数中选择任何选项,每当我尝试构建作业B时,我应该在作业A上选择的相同参数值被作业B选中。工作B不应该是工作A的下游工作。

我的解决方法:我尝试将我在作业A上选择的参数复制到文件中。

在作业B上,我无法在jenkins中找到选项,从参数部分的文件中选择要拾取的变量值。

非常感谢任何建议和不同方法。

1 个答案:

答案 0 :(得分:0)

您可以使用System Groovy脚本执行此操作。您可以找到最新的作业A build,并将参数值复制到作业B中。

import hudson.model.*
def hif = Hudson.instance

  //Get build variables for this build
def buildMap = build.getBuildVariables() 

//get most recent build of project A
def a = hif.getItems(hudson.model.Project).find {it.displayName.toUpperCase()=='PROJECT A'}.getBuilds().first()

//Add parameter to the build variables for this build
buildMap['MYPARAM']=a.buildVariableResolver.resolve('MYPARAM')
println(buildMap['MYPARAM'])


//Assign the new parameters back to job B
setBuildParameters(buildMap)

def setBuildParameters(map) {
    def npl = new ArrayList<StringParameterValue>()
    for (e in map) {
        npl.add(new StringParameterValue(e.key.toString(), e.value.toString()))
    }
    def newPa = null
    def oldPa = build.getAction(ParametersAction.class)
    if (oldPa != null) {
        build.actions.remove(oldPa)
        newPa = oldPa.createUpdated(npl)
    } else {
        newPa = new ParametersAction(npl)
    }
    build.actions.add(newPa)
}