提供其他Jenkins项目的参数

时间:2018-11-09 13:43:15

标签: jenkins jenkins-plugins jenkins-pipeline

说,我有2个Jenkins-Jobs(可能会得到更多)A和B。我不使用Jenkins版本2.138.2。

A有2个参数:

  • param_name1:选择
  • param_name2:Git参数

B还有两个参数:

  • param_name1:选择(与A相同)
  • param_name3:Git参数(在命名和Git存储库中均不同于A)

我想要另一个作业C,它提供作业A和B中的所有参数;因此作业C应该动态提供3个参数。

有没有提供此功能的插件?还是有其他工作方式?

1 个答案:

答案 0 :(得分:0)

我不知道这样的插件。但是你可以自己做。我建议创建一个global shared lib,然后定义一个方法 getMyParameters ,并使用文件 vars / getMyParameters.groovy 如下:

def call(Map config)
{ 
   boolean isA = config["isA"]
   boolean isB = config["isB"]
   boolean isC = config["isC"]
   def propertiesList = []
   if(isA || isB || isC)
   {
      propertiesList << choice(choices: ['a', 'b', 'c'], description: 'my param_name1', name: 'param_name1')
   }
   if(isA || isC)
   {
      propertiesList << string(defaultValue: '-', description: 'my param_name2', name: 'param_name2', trim: false)
   }
   if(isB || isC)
   {
      propertiesList << string(defaultValue: '-', description: 'my param_name3', name: 'param_name2', trim: false)
   }
   return propertiesList
}

现在,您可以像下面这样重复使用Jenkinsfiles中的参数:

@Library('my-jenkins-shared-lib@master')  _

properties([parameters(getMyParameters(isA: true, isB: false, isC: false))])

pipeline 
{
    agent none

    stages
    {
        stage("JobA")
        {
            steps
            {
                echo 'Hello JobA'
            }
        }
    }
}