我们有一个项目,有几个长寿分支和多个短生活分支。我们将Jenkins与Pipeline插件一起使用,并定义了Multibranch Pipeline作业来构建我们的源代码。我们使用Jenkinsfile来描述项目的构建,测试和部署。
我们的Jenkinsfile完美地完成了这项工作,但它变得有点复杂。根据当前的分支等,我们有一定的逻辑。仅从匹配特定模式的分支构建和部署docker镜像。
因此,我们努力在每个分支中保持Jenkinsfile 相同的。但是,有时我们需要更新Jenkins文件,它要求我们更新所有分支中的相同文件。
如何在所有分支中处理Jenkinsfile的这种“常见更新”,并且仍然可以使用“Multibranch Pipeline”作业类型?是否可以为项目使用单个Jenkins文件,并且仍然可以使用“Multibranch Pipeline”作业类型?
答案 0 :(得分:1)
这可以使用Shared Libraries来实现。可以有一个包含Jenkinsfile
逻辑的地方,并且仍然有" Multibranch Pipeline"工作类型。
首先,为具有结构的公共Jenkinsfile
逻辑创建一个新的存储库:
(root)
+- vars
| +- myJobPipeline.groovy
myJobPipeline.groovy
的内容是您的Jenkinsfile
内容,并进行了一些修改。例如,它可能是:
#!/usr/bin/groovy
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
# And here goes your original Jenkinsfile content
node {
stage('get the code') {
checkout scm
}
stage('npm install') {
sh 'npm install'
}
...
}
然后,在Jenkins配置中转到配置系统 - > Global Pipeline Libraries并定义您的共享库存储库。
最后,将项目Jenkinsfile
更新为:
#!/usr/bin/env groovy
myJobPipeline {
}
实际管道定义将通过共享库加载。