Плагин
Результат билда будет добавлен комментарием к этому реквесту, после чего можно принимать решение — принимать реквест, или нет.
Содержание
Установка Jenkins и плагина
Устанавливаем Docker:
Запускаем Jenkins в Docker:
Тут просто быстрый запуск, более полные примеры есть тут>>> и тут>>>.
Заходим на страницу Jenkins, проводим обычную первоначальную установку, переходим в Plugins, устанавливаем Pull Request Builder:
Github user и API-токен
Для работы плагина требуется API токен. В случае использования organizations в Github — лучше создать отдельного пользователя в Github, у которого будут права owner на репозиторий, и создать ему токен.
В этом примере делается на обычном Github аккаунте, потому делаем API-токен для своего пользователя.
Переходим в
Сохраняем токен, т.к. больше его не увидим.
Переходим в Manage Jenkins > Configure System, в блоке GitHub Pull Request Builder настраиваем данные доступа, добавляем токен в Credentials, тип Secret text:
Оставляем Auto-manage webhooks, по желанию добавляем Use comments to report results when updating commit status fails и Use comments to report intermediate phases:
Тут же можно сразу протестировать токен и доступы:
Добавление билда
Создаём новую джобу:
В General добавляем GitHub project, в Build Triggers включаем GitHub Pull Request Builder, и в GitHub API credentials выбираем данные доступа — токен, который добавили ранее в настройках:
В Admin list добавляем пользователя, комментарии которого всегда билдить (если пользователя, который добавит комментарий в PR или создаст PR в Admins list нет — плагин создаст комментарий с просьбой заапрувить билд, см. документацию
Отмечаем Use github hooks for build triggering, что бы выполнять запуск, используя webhook Github-а, в PipelineScript описываем действия.
Плагин задаёт несколько полезных переменных:
- ghprbActualCommit
- ghprbActualCommitAuthor
- ghprbActualCommitAuthorEmail
- ghprbPullDescription
- ghprbPullId
- ghprbPullLink
- ghprbPullTitle
- ghprbSourceBranch
- ghprbTargetBranch
- ghprbCommentBody
- sha1
Которые можно использовать в билдах.
Например — можно создать такой скрипт:
println("Building from branch ${ghprbSourceBranch}")
Сохраняем джобу, и в Settings репозитория должен появится созданный плагином webhook:
Создание Github PR
Клонируем репозиторий:
Создаём бранч:
Делаем изменения:
Коммитим, пушим:
Создаём PR:
Github выполняет webhook к Jenkins-у:
Первый был создан после создания джобы в Jenkins, далее, после каждого комментария/нового PR — создаётся новый webhook, который триггерит билд.
Билд прошёл:
Лог Jenkins-а:
Результат добавляется в PR:
По ссылке Details можно перейти к билду в Jenkins.
Готово.