如何从单个代码库中管理多个Jenkins流水线?

10

目前我们使用JJB来编译Jenkins作业(主要是管道),以配置大约700个作业,但是JJB2似乎无法很好地扩展构建管道,因此我正在寻找一种将其从等式中删除的方法。

主要希望能够将所有这些管道存储在单个集中式存储库中。

请注意,在我们的用例中,不可能将CI配置(Jenkinsfile)保存在每个存储库和分支内,我们需要将所有管道保存在一个名为“jenkins-jobs.git”的单个存储库中。

3个回答

3

1
我认为Jenkins共享库的目的就是这样。
我没有亲自开发这个库,但我正在使用一些。基本上:
- 在共享库中开发jenkins流水线的“共享代码” - 它可以包含整个流水线(步骤序列) - 将此库添加到jenkins服务器中 - 在每个项目中,使用@Library导入这些库,并添加一个jenkinsfile。

-1

正如 @Juh_ 所说,你可以使用 jenkins 共享库。这里是完整的步骤,假设我们有三个分支:

  • master
  • develop
  • stage

而我们想要创建一个单一的 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()

这将调用您之前在公共分支中创建的通用函数,并执行管道。


如果我们不能在存储库中定义多个Jenkins文件,则共享库是无用的。 OP还说他们不想将Jenkins文件存储在单独的存储库或分支中。 - timblaktu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接