Я создал очень простой многоотраслевой конвейер для своего локального Jenkins через интерфейс BlueOcean.Из конфигурации по умолчанию я удалил почти все варианты поведения, кроме одного для обнаружения веток.Конфигурация выглядит следующим образом:
В пределах Jenkinsfile
Я пытаюсь настроить следующий сценарий:
- Оформить заказответвление
- (опционально) Объединить его с
master
ответвление - Сборка Back-end
- Сборка Front-end
Фрагмент из моего Jenkinsfile
:
pipeline {
agent none
stages {
stage('Setup') {
agent {
label "master"
}
steps {
sh "git checkout -f ${env.BRANCH_NAME}"
}
}
stage('Merge with master') {
when {
not {
branch 'master'
}
}
agent {
label "master"
}
steps {
sh 'git checkout -f origin/master'
sh "git merge --ff-only ${env.BRANCH_NAME}"
}
}
stage('Build Back-end') {
agent {
docker {
image 'openjdk:8'
}
}
steps {
sh './gradlew build'
}
}
stage ('Build Front-end') {
agent {
docker {
image 'saddeveloper/node-chromium'
}
}
steps {
dir ('./front-end') {
sh 'npm install'
sh 'npm run buildProd'
sh 'npm run testHeadless'
}
}
}
}
}
Сам конвейер и шаги сборки работают нормально, но проблема в том, что Дженкинс добавляет шаг «Проверка из контроля версий» перед каждым этапом.Шаг ищет новые ветви, выбирает ссылки, но также проверяет текущую ветку.Вот соответствующий вывод из полного журнала сборки:
// stage Setup
> git checkout -f f067047bbdd3a5d5f9d1f2efae274bc175829595
sh git checkout -f my-branch
// stage Merge with master
> git checkout -f f067047bbdd3a5d5f9d1f2efae274bc175829595
sh git checkout -f origin/master
sh git merge --ff-only my-branch
// stage Build Back-end
> git checkout -f f067047bbdd3a5d5f9d1f2efae274bc175829595
sh ./gradlew build
// stage Build Front-end
> git checkout -f f067047bbdd3a5d5f9d1f2efae274bc175829595
sh npm install
sh npm run buildProd
sh npm run testHeadless
Таким образом, как вы видите, он эффективно сбрасывает рабочий каталог в конкретный коммит перед каждым этапом git checkout -f f067...595
.
Есть ли способ отключить этоповедение проверки по умолчанию?Или какой-нибудь жизнеспособный вариант, как реализовать такое необязательное слияние с основной веткой?
Спасибо!