Можно ли запускать задания Jenkins с помощью Github Pull Request Builder без использования веб-перехватчика?
Я использую Jenkins для создания и тестирования кода в репозитории GitHub. Я хочу автоматически запускать тесты, когда на github создается PR с определенными комментариями/метками.
Я обнаружил, что построитель запросов на включение плагинов GitHub обеспечивает такие функции. Однако каждое руководство/статья, которое я нахожу, основано на отправке веб-перехватчика с github на jenkins по новому PR.
Проблема в том, что я не хочу предоставлять свои jenkins github, а скорее хочу использовать график, подобный cron, для опроса новых PR, которые соответствуют критериям для запуска теста, а затем использовать API github для отправки результатов в Пиар-комментарии.
Кто-нибудь знает какую-либо документацию, в которой можно было бы использовать такой подход? Или у вас есть конфигурация для работы с использованием этого подхода? Я попытался настроить строку Crontab и триггерную фразу для задания в конструкторе запросов на извлечение Github, но, похоже, запустить задание не удалось.
1 ответ
Я сомневаюсь, что для этого существует официальная документация, но это, безусловно, выполнимо.
Вам понадобится 2 работы. Одно задание должно выполняться периодически (примерно каждые 3 минуты), а другое — для запуска самой сборки. Задание опроса должно опросить все открытые PR и рекурсивно проверить, был ли уже создан их последний коммит. Для этого вам нужно использовать API запроса на извлечение GitHub . Если это так, то вы можете просто завершить сборку. Если нет, отправьте идентификатор PR в качестве параметра и запустите второе задание, которое содержит фактическую часть здания.
Вы можете сделать эту сборку непараллельной, если обнаружите какие-либо проблемы с перекрывающимися сборками. Затем ваши сборки будут запускаться одна за другой и создавать последний коммит в каждом PR.
Прежде чем начать сборку, убедитесь, что вы используете API GitHub для обновления состояния коммита, который вы готовитесь создать. Тогда задание опроса будет знать, что оно не должно снова ставить этот коммит в очередь для сборки.