Я настроил задание Jenkins для запуска конвейера, когда ветвь объединяется с указанной c другой ветвью (давайте назовем ветвь назначения ${BRANCH_NAME}
). Я настроил Gitlab с помощью веб-крючка Дженкинса для этой работы.
В конвейере я вызываю метод checkout :
steps {
checkout([
$class: 'GitSCM',
branches: [[name: BRANCH_NAME]],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'LocalBranch', localBranch: '**'],
[$class: 'CleanCheckout']
],
submoduleCfg: [],
userRemoteConfigs: [[url: SCM_URL]]
])
sh "git pull origin ${BRANCH_NAME}" // This ensures the head is the latest merge commit.
}
Моя проблема в том, что без этой команды git pull
метод checkout
проверяет фиксацию непосредственно перед фиксацией слияния. Я использую команду git pull
для проверки самого последнего коммита из ветви назначения (который является коммитом слияния), но это выглядит как хакерский обходной путь. Как я могу заставить сам метод checkout
вести себя так, как я планировал?
(Кстати, я видел примеры использования расширения PreBuildMerge, которое, как представляется, заканчивается коммитом слияния, но AIUI который создает коммит локально, а не берет исходный коммит слияния с сервера.)