如何参数化Jenkinsfile作业

时间:2018-02-01 09:06:18

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我有Jenkins管道工作,其中工作之间的唯一区别是参数,单个"名称"值,我甚至可以使用多分支作业名称(虽然不是它作为BRANCH名称的JOB_NAME传递的内容,遗憾的是,如果没有解析,没有一个envs看起来合适)。如果我可以在Jenkins文件的外部设置它,那将是很好的,因为那时我可以为所有各种工作重用相同的jenkins文件。

3 个答案:

答案 0 :(得分:4)

基本上,您需要创建jenkins shared library示例名称myCoolLib并在vars下的一个文件中包含完整的声明性管道,假设您调用文件myFancyPipeline.groovy。< / p>

想写我的例子,但实际上我看到the docs are quite nice,所以我会从那里复制。首先是myFancyPipeline.groovy

def call(int buildNumber) {
  if (buildNumber % 2 == 0) {
    pipeline {
      agent any
      stages {
        stage('Even Stage') {
          steps {
            echo "The build number is even"
          }
        }
      }
    }
  } else {
    pipeline {
      agent any
      stages {
        stage('Odd Stage') {
          steps {
            echo "The build number is odd"
          }
        }
      }
    }
  }
}

然后使用它的aJenkins文件(现在有2行)

@Library('myCoolLib') _
evenOrOdd(currentBuild.getNumber())

显然,这里的参数是int类型,但它可以是任何类型的任意数量的参数。

我使用这种方法,并且有一个groovy脚本有3个参数(2个字符串和一个int),并且有15-20个Jenkins文件,它们通过共享库使用该脚本,它是完美的。动机当然是任何编程中最基本的规则之一(不是引用,而是类似):如果你在两个不同的地方有“相同的代码”,那么事情就不对了。

答案 1 :(得分:2)

将此添加到您的Jenkins文件中:

properties([
  parameters([
    string(name: 'myParam', defaultValue: '')
  ])
])

然后,一旦构建运行一次,您将看到&#34;使用参数构建&#34;工作UI上的按钮。

您可以输入所需的参数值。

在管道脚本中,您可以使用params.myParam

引用它

答案 2 :(得分:0)

在您的管道作业配置中有一个选项此项目已参数化。如果您愿意,可以编写变量名称和默认值。在管道中使用env.variable_name

访问此变量