Как использовать многоотраслевой конвейер Дженкинса с монорепо

У меня есть проект в monorepo с 2-мя артефактами: фронтенд и бэкэнд.

my-project
  frontend
    Jenkinsfile
  backend
    Jenkinsfile

Я хотел бы использовать Blue Ocean и многоотраслевой трубопровод, но есть ли способ использовать два Jenkinsfile а два трубопровода? Afaik, Jenkinsfile должен быть в корне репо.

В противном случае я буду использовать классический конвейер, но мне нужно будет создать новый конвейер для каждой новой ветки, что является болезненным.

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
}

Теперь ваш единственный Jenkinsfile определит, какое задание конвейера его создает, а затем запустит правильные конвейеры.

В качестве альтернативы вы можете создать один конвейер, в котором вы просто создаете правильные переменные в коммутаторе, чтобы построить правильные артефакты.

Не использовав Blue Ocean, я не уверен, насколько хорошо эти трубопроводы визуализируются.

Другие вопросы по тегам