#git #jenkins
#git #Дженкинс
Вопрос:
Я прочитал документацию по плагину git, а также несколько вопросов здесь, но на самом деле не понял основную идею выбора ветки в git.
Настройка
Задание Дженкинса
Сценарий конвейера со следующим этапом
stage('Clone Repo') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: "**"]],
extensions: [[$class: 'CleanCheckout']],
userRemoteConfigs: [[url: 'ssh://git@git.server/project/repo.git', credentialsId: 'secret']]
]);
}
}
Сервер Bitbucket
Веб-хук при каждом нажатии, указывающем на: http://jenkins.url/git/notifyCommit?url=ssh://git@git.server/project/repo.git
Вопросы
Я понял следующее методом проб и ошибок:
- Bitbucket срабатывает при каждом нажатии на каждую ветку
- Дженкинс проверяет каждую ветку и пытается создать ветку, которая до сих пор не была собрана
- Ветка Дженкинса может отличаться, особенно для новых созданных заданий
- После запуска задания вручную Дженкинс поработал над каждой веткой. Следовательно, каждое новое push-уведомление от bitbucket приведет к созданию правильной ветки в jenkins
Правильно ли это? Интересно, может ли это неявное определение ветви привести к неожиданному поведению.
Параметр
Кроме того, я изменил сценарий конвейера, чтобы иметь параметр выбора ветки для сборки вручную:
parameters {
gitParameter(name: 'branch',
defaultValue: 'master',
type: 'PT_BRANCH',
selectedValue: 'DEFAULT',
quickFilterEnabled: true,
sortMode: 'ASCENDING_SMART',
branchFilter: 'origin/(.*)',
description: 'Branch to run the job')
}
И этап проверки:
stage('Clone Repo') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: "*/${branch}"]],
extensions: [[$class: 'CleanCheckout']],
userRemoteConfigs: [[url: 'ssh://git@git.server/project/repo.git', credentialsId: 'secret']]
]);
}
}
Для запуска задания вручную все работает нормально. Как я могу запустить это задание для правильной ветки (например, перезаписать параметр) с помощью webhook?
Заранее спасибо
Ответ №1:
Если я правильно понял ваш вопрос, вы хотите создать многоотраслевой конвейер.
По ссылке ниже приведен учебник по многоотраслевым конвейерам jenkins для начинающих.
https://devopscube.com/jenkins-multibranch-pipeline-tutorial/
Комментарии:
1. Спасибо @JandaTheMan. Я посмотрю. Помимо получения полного рабочего решения, я хотел бы понять поведение и идею, заданные в моем вопросе. Наиболее интересным является неявный (?) Выбор ветки в jenkins, который я действительно не понимаю.
2. Что вы подразумеваете под неявным определением ветки @amw?
3. Я имею в виду, что дженкинс, похоже, выполняет последнюю фиксацию в одной ветке, которая до сих пор не была собрана, без явного указания этого. Это происходит при ручном запуске, а также при запуске с помощью webhook. Что именно стоит за этой логикой?