如何将 jenkins 多分支管道与 monorepo 一起使用

Yan*_*san 5 jenkins jenkins-pipeline multibranch-pipeline jenkins-blueocean

我在 monorepo 中有一个项目,有 2 个工件:前端和后端。

my-project
  frontend
    Jenkinsfile
  backend
    Jenkinsfile
Run Code Online (Sandbox Code Playgroud)

我想使用蓝海和多分支管道,但有没有办法使用两个Jenkinsfile和两个管道?Afaik,Jenkinsfile 需要位于存储库的根目录。

否则,我将使用经典管道,但我需要为每个新分支创建一个新管道,这很痛苦。

pdr*_*oss 1

创建两个多分支管道:MyProjectFrontEnd 和 MyProjectBackEnd。

然后在 Jenkinsfile 中有以下内容

#!/usr/bin/env groovy
// Get MyProjectFrontEnd from MyProjectFrontEnd/master
switch(env.JOB_NAME.split("/")[0])
{
  case 'MyProjectFrontEnd':
    project = 'front'
    break
  case 'MyProjectBackEnd':
    project = 'back'
    break
  default
    project = ''
    break
}

if (project == 'front') {
  // Place your build steps here for front
}

if (project == 'back') {
  // Place your build steps here for back
}
Run Code Online (Sandbox Code Playgroud)

现在,您的单个 Jenkinsfile 将确定哪个管道作业正在构建它,然后运行正确的管道。

或者,您可以创建一个管道,在其中实例化交换机中的正确变量,以便构建正确的工件。

由于没有使用过 Blue Ocean,我不确定这些管道的可视化效果如何。