Как использовать многоотраслевой конвейер Дженкинса с монорепо
У меня есть проект в 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, я не уверен, насколько хорошо эти трубопроводы визуализируются.