Плагин Pull-Request Builder предназначен для запуска билдов, когда в Github репозитории создаётся новый pool request, что бы выполнить сборку до того, как PR будет добавлен в основную ветку.
Результат билда будет добавлен комментарием к этому реквесту, после чего можно принимать решение – принимать реквест, или нет.
Содержание
Установка Jenkins и плагина
Устанавливаем Docker:
[simterm]
root@ip-172-31-10-151:/home/admin# curl https://get.docker.com/ | bash
[/simterm]
Запускаем Jenkins в Docker:
[simterm]
root@ip-172-31-10-151:/home/admin# docker run -d -ti -p 8080:8080 jenkins/jenkins:lts
[/simterm]
Тут просто быстрый запуск, более полные примеры есть тут>>> и тут>>>.
Заходим на страницу Jenkins, проводим обычную первоначальную установку, переходим в Plugins, устанавливаем Pull Request Builder:
Github user и API-токен
Для работы плагина требуется API токен. В случае использования organizations в Github – лучше создать отдельного пользователя в Github, у которого будут права owner на репозиторий, и создать ему токен.
В этом примере делается на обычном Github аккаунте, потому делаем API-токен для своего пользователя.
Переходим в https://github.com/settings/tokens, добавляем токен с правами repo и admin:repo_hook:
Сохраняем токен, т.к. больше его не увидим.
Переходим в 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
Клонируем репозиторий:
[simterm]
$ git clone [email protected]:setevoy2/tests.git
[/simterm]
Создаём бранч:
[simterm]
$ cd tests/ $ git checkout -b pr-test Switched to a new branch 'pr-test'
[/simterm]
Делаем изменения:
[simterm]
$ touch test.file
[/simterm]
Коммитим, пушим:
[simterm]
$ git add test.file && git commit -m "testing PR" && git push -u origin pr-test
[/simterm]
Создаём PR:
Github выполняет webhook к Jenkins-у:
Первый был создан после создания джобы в Jenkins, далее, после каждого комментария/нового PR – создаётся новый webhook, который триггерит билд.
Билд прошёл:
Лог Jenkins-а:
Результат добавляется в PR:
По ссылке Details можно перейти к билду в Jenkins.
Готово.