#jenkins #github #continuous-integration
#дженкинс #github #непрерывная интеграция
Вопрос:
Я устанавливал Jenkins (с плагином blue ocean) и успешно настроил GitHub webhook, так что при каждом отправлении в репозиторий будет проверяться, прошел ли процесс сборки успешно или нет (как на этом прикрепленном изображении).
После установки по умолчанию установлены 2 проверки статуса
- jenkins / branch: проверьте, удалось ли успешно выполнить коммит, и сообщите о статусе обратно в GitHub
- jenkins / pr-merge: проверьте, можно ли объединить PR с базовой веткой (в настоящее время разрабатывается), и сообщите о статусе обратно в GitHub
Я хочу добавить еще 1 проверку статуса, например, Jenkins / unit-test. Как я мог бы сделать это со стороны Jenkins? И где упомянутые выше 2 проверки статуса, определенные в Jenkins с плагином blue ocean?
Причина, по которой я хочу добавить дополнительную проверку статуса, заключается в том, что я могу настроить эту проверку как необязательную, поэтому, даже если модульный тест не удался, я все равно могу объединить запрос на извлечение. (Наш проект все еще находится на очень ранних стадиях разработки, поэтому на данный момент нет необходимости требовать прохождения всех модульных тестов для объединения PR.)
Комментарии:
1. «нет необходимости требовать прохождения всех модульных тестов» — я бы настоятельно рекомендовал вам переосмыслить это. Это скользкий путь к тому, чтобы никогда не проходить все тесты, и сигнал о сбоях, о которых вы заботитесь, теряется в шуме сбоев, которых у вас нет.
2. @jonrsharpe Большое спасибо за ваш совет. Даже в этом случае требуется пройти все тесты, я все равно хочу знать, есть ли способ добавить настраиваемую проверку статуса в текущий конвейер.
Ответ №1:
И где упомянутые выше 2 проверки статуса, определенные в Jenkins с плагином blue ocean?
Это поведение плагина по умолчанию.
Как я мог бы сделать это со стороны Jenkins?
Для достижения этой цели есть несколько вариантов, но в конечном итоге вам нужно будет создать новый статус самостоятельно, используя GitHub Status API. Это простой вызов REST, который создает новую запись в списке статусов с любым результатом, который вы передаете. Теперь, что касается того, как это сделать с помощью Jenkins, я бы посоветовал добавить вызов API в ваш файл Jenkins и изолировать unit test
часть сборки и передать или отклонить результат на основе выходных данных этой команды.
Я бы взглянул на разделяемые библиотеки Jenkins, чтобы посмотреть, есть ли какие-то подпрограммы, которые уже выполняют эту работу за вас, и в этом случае вы бы искали метод, который инкапсулирует вызов API.
Комментарии:
1. Спасибо. Я обязательно рассмотрю ваше предложение. Поскольку GitHub Status API выглядит довольно просто, я попытаюсь создать пакетный файл, который обновит статус фиксации после запуска модульного теста (например).