xen*_*ide 12 jenkins jenkins-pipeline jenkins-declarative-pipeline
我有Jenkins管道工作,其中作业之间的唯一区别是参数,单个"名称"值,我甚至可以使用多分支作业名称(虽然不是它作为BRANCH名称的JOB_NAME传递的内容,遗憾的是没有envs看起来合适而无需解析).如果我可以设置Jenkinsfile的外部,那将是很好的,因为那时我可以为所有各种工作重用相同的jenkins文件.
基本上,您需要创建一个jenkins 共享库示例名称,myCoolLib并在vars下的一个文件中拥有一个完整的声明性管道,假设您调用该文件myFancyPipeline.groovy.
想写我的例子,但实际上我看到文档非常好,所以我会从那里复制。首先是 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"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后是使用它的 Jenkinsfile(现在有 2 行)
@Library('myCoolLib') _
evenOrOdd(currentBuild.getNumber())
Run Code Online (Sandbox Code Playgroud)
显然这里的参数是 int 类型,但它可以是任意数量的任意类型的参数。
我使用这种方法并拥有一个具有 3 个参数(2 个字符串和一个整数)的 groovy 脚本,并且有 15-20 个 Jenkinsfiles 通过共享库使用该脚本,这是完美的。动机当然是任何编程中最基本的规则之一(不是引用,而是类似):如果您在 2 个不同的地方有“相同的代码”,那就是不对的。
将此添加到您的 Jenkinsfile 中:
properties([
parameters([
string(name: 'myParam', defaultValue: '')
])
])
Run Code Online (Sandbox Code Playgroud)
然后,一旦构建运行一次,您将在作业 UI 上看到“使用参数构建”按钮。
在那里你可以输入你想要的参数值。
在管道脚本中,您可以使用 params.myParam
| 归档时间: |
|
| 查看次数: |
4114 次 |
| 最近记录: |