Как запустить работу Jenkins 2.0 Pipeline из запроса на извлечение GitHub
Похоже, что GitHubPullRequestBuilder несовместим с заданиями конвейера Jenkins v2.0.
Как настроить задание конвейера, которое должно быть запущено из события запроса на подавление GitHub?
Документация по этой теме разрежена, и я не могу найти никаких примеров этого. Или лучше создать веб-крючок в GitHub для запуска работы с конвейером на PR-мероприятии?
Ответы
Ответ 1
Самый простой способ использования Pipeline с запросами на выгрузку GitHub состоит в том, чтобы поместить script в ваш репозиторий под именем Jenkinsfile
, а затем установить плагин Source Branch GitHub. Документация
Ответ 2
У меня была аналогичная проблема. Heres, что сработало для меня
Pre-REQ
- Дженкинс вер. 2+ (я использовал Jenkins 2.60)
- Гитуб (или Гифхуб
предприятие)
- Ваш github и Дженкинс должны иметь возможность разговаривать с
друг друга.
В Github
- создать идентификатор персонального доступа github (PAT) с соответствующими правами.
- Для вашего репо, создайте webhook с
- URL как
YourJenkinsURL/github-webhook/
- Выберите "Позвольте мне выбрать отдельные события и проверить" Запрос Pull "
- Добавьте файл Jenkins в корневую папку вашего репо. Для целей тестирования вы могли бы разместить контент в качестве базового мира приветствия, как показано ниже.
pipeline {
agent any
stages {
stage('Test') {
steps {
echo 'Hello World ...'
}
}
}
}
В Дженкинсе
- Установите плагин GitHub Pull Request Builder. (Вам также нужен плагин "Github", но он обычно должен быть установлен как часть Jenkins ver 2 +)
- Дженкинс - Учетные данные
- Добавить github Personal Access Token (PAT) в качестве "секретного пароля".
- Добавьте имя пользователя-пароль github как "учетные данные пользователя-пароля".
- Управление Jenkins - настройка системы
- Github - серверы Github: это часть плагина Github. Добавьте сервер github. 'URL API По умолчанию будет https://api.github.com. Если вы используете корпоративный github, замените его на адрес github предприятия, за которым следует /api/v 3. Для учетных данных выберите параметр PAT. Проверьте соединение. Контролируется "Управление крючками".
- GitHub Pull Request Builder: для URL-адреса API сервера GitHub используется тот же URL-адрес, что и в разделе Github Server. Оставьте "Shared Secret blank". Для учетных данных используйте учетные данные "имя пользователя-пароль". Проверьте учетные данные, чтобы обеспечить его работу. В моих настройках было проверено "Автоматическое управление веб-камерами".
- Работа трубопровода
- Создайте новый элемент, используя параметр "Трубопровод". Примечание. Это работа с ванильным трубопроводом, а не с многоканальным трубопроводом.
- Общая секция: проверьте проект Github - URL-адрес проекта: введите свой адрес рефинансирования github
- Построить триггеры: проверить 'GitHub Pull Request Builder
- Для параметра выбора учетных данных API GitHub выберите параметр, который вы устанавливаете для построителя запросов на выборку GitHub в окне "Управление дженкинсами - настройка системы"
- Для списка admin: добавьте свое имя пользователя
- Проверить использование github hooks для запуска сборки
- Трубопровод:
- Выберите "Конвейер Script из SCM. Обратите внимание, что предполагается, что корневая папка вашего репо будет содержать файл Jenkinsfile
- SCM: выберите 'Git
- Хранилища - введите данные репо. Для учетных данных используются учетные данные, основанные на имени пользователя и пароле.
- Нажмите "Дополнительно" и добавьте refspec как
+refs/pull/*:refs/remotes/origin/pr/*
- Ветвь - должна быть
${sha1}
- Script Путь: по умолчанию используется файл Jenkinsfile, оставьте как есть.
- Легкая проверка - снимите этот флажок (https://github.com/jenkinsci/ghprb-plugin/issues/507)
Вот оно. У вас все настроено. Создание PR на главной ветке вашего репо должно теперь инициировать работу вашего проекта Jenkins Pipeline
Некоторые наблюдения
- Повторное добавление полезной нагрузки webhook PR из github не запускает конвейер, но открывает новый PR или даже повторно открывает закрытый PR на github, запускает работу с конвейером
- В настройке конфигурации трубопровода, если вы выберете "Pipeline Script" и вставьте туда конвейер Script, задание не запускается!!!
Ответ 3
Поток в двух словах может выглядеть следующим образом:
-
Вы создаете свой конвейер как код и сохраняете его в файле с именем Jenkinsfile
в корневом каталоге вашего проекта. Этот код должен описывать, как будет строиться ваш проект. См. Здесь примеры: https://jenkins.io/doc/pipeline/examples/
-
Затем вам нужно создать новый проект "Проект для многотрубных трубопроводов" в вашем Jenkins. Вы должны настроить это так, чтобы сканировать свое репо на шаге 1.
-
Теперь, когда вы получаете новый филиал PR, открытый на вашем этапе 1 репо, ветка будет выгружена и будет построена в соответствии с инструкциями Jenkinsfile, включенными в нее. Вы можете настроить дополнительные условия для того, что будет построено, и когда вы захотите.
Примечания: