目前我们使用JJB来编译Jenkins作业(主要是管道),以配置大约700个作业,但是JJB2似乎无法很好地扩展构建管道,因此我正在寻找一种将其从等式中删除的方法。
主要希望能够将所有这些管道存储在单个集中式存储库中。
请注意,在我们的用例中,不可能将CI配置(Jenkinsfile)保存在每个存储库和分支内,我们需要将所有管道保存在一个名为“jenkins-jobs.git”的单个存储库中。
目前我们使用JJB来编译Jenkins作业(主要是管道),以配置大约700个作业,但是JJB2似乎无法很好地扩展构建管道,因此我正在寻找一种将其从等式中删除的方法。
主要希望能够将所有这些管道存储在单个集中式存储库中。
请注意,在我们的用例中,不可能将CI配置(Jenkinsfile)保存在每个存储库和分支内,我们需要将所有管道保存在一个名为“jenkins-jobs.git”的单个存储库中。
@Library
导入这些库,并添加一个jenkinsfile。正如 @Juh_ 所说,你可以使用 jenkins 共享库。这里是完整的步骤,假设我们有三个分支:
而我们想要创建一个单一的 Jenkins 文件,以便我们只需更改一个地方即可。你需要做的就是创建一个新的分支,例如common。这个分支 MUST 拥有 此结构。现在我们感兴趣的是在vars目录下添加一个新的 groovy 文件,例如:common.groovy。在这里,我们可以放置你希望在所有分支中使用的通用 Jenkins 文件。
以下是一个示例:
def call() {
node {
stage("Install Stage from common file") {
if (env.BRANCH_NAME.equals('master')){
echo "npm install from common files master branch"
}
else if(env.BRANCH_NAME.equals('develop')){
echo "npm install from common files develop branch"
}
}
stage("Test") {
echo "npm test from common files"
}
}
}
您必须将代码调用函数包装起来,以便在其他分支中使用。现在我们已经完成了在common分支中的工作,我们需要在我们的分支中使用它。前往您希望使用此流水线的任何分支,例如: master,并创建Jenkinsfile,然后放入这一行代码:
common()
这将调用您之前在公共分支中创建的通用函数,并执行管道。