Следует ли автоматически запускать индексацию ветвей для заданий Multibranch Pipeline с помощью веб-перехватчиков?

Я настроил несколько заданий Multibranch Pipeline в Jenkins (под управлением 2.46.2 LTS, Branch API 2.0.8, GitHub Branch Source 2.0.5 и Pipeline Multibranch 2.14) и только что отметил, что индексация ветвей - и, следовательно, любые очистка старых веток - похоже, не запускается вызовами веб-перехватчика из GitHub. Он срабатывает только в том случае, если кто-то вручную щелкает ссылку Сканировать репозиторий сейчас или если конфигурация задания в Jenkins повторно сохраняется. Я использую метку времени, показанную на странице журнала сканирования репозитория, как указание на то, когда происходит индексация ветки.

Кажется, что новые ветки или изменения в существующих обнаруживаются и создаются правильно, поэтому веб-перехватчики из системы управления версиями (GitHub) работают, но был удивлен тем, что это также не запускало индексацию ветвей и, следовательно, очистку старой ветки. Я просто не могу сказать из документации, является ли это правильное и ожидаемое поведение или если что-то не так в моей настройке.

Я отмечаю, что в тексте справки для параметра «Периодически, если не запускать иначе» говорится:

Некоторые виды папок переиндексируются автоматически и сразу после получения внешнего события. Например, проект с несколькими ветвями повторно проверит свой репозиторий SCM на наличие новых, удаленных или измененных ветвей, когда получит уведомление об изменении SCM. (Push-уведомление может быть настроено в соответствии с подключаемым модулем SCM, используемым для каждого соответствующего источника ветки.) Однако такие уведомления иногда могут быть ненадежными, или Jenkins может даже не работать для их получения. В некоторых случаях немедленное уведомление невозможно, например, потому что Дженкинс находится за брандмауэром и может опрашивать только внешнюю систему.

Этот триггер допускает периодический откат, но при необходимости. Если в указанный интервал индексация не производилась, то будет запланировано индексация. Например, в случае проекта с несколькими ветвями, если система управления версиями не настроена для push-уведомлений, установите короткий интервал (большинство людей выбирают от 15 минут до 1 часа). Если система управления версиями настроена для push-уведомлений, установите интервал, соответствующий максимально допустимой задержке в случае потери push-уведомления, в качестве последней фиксации дня. (Последующие коммиты в любом случае должны инициировать индексацию и привести к тому, что фиксация будет принята, поэтому большинство людей выберут от 4 часов до 1 дня.)

Это, безусловно, означает, что индексация задания Multibranch Pipeline должна повторно запускаться событиями ветвления (например, отправкой из GitHub через веб-перехватчик), но временная метка в моем журнале индексирования, похоже, опровергает это.

Итак, что я наблюдаю за предполагаемым поведением? Если да, и мне нужна регулярная очистка старых веток, нужно ли мне устанавливать флажок «Периодически, если не запускать иначе» в разделе «Триггеры сканирования репозитория»? Или что-то не так с моей настройкой, что мешает ей работать должным образом?


person Nick Jones    schedule 10.05.2017    source источник
comment
Я столкнулся с аналогичной проблемой в том, что у меня есть веб-перехватчик github, указывающий на функцию Lambda (вместо сервера Jenkins / github-webhook). В результате Дженкинс не может обнаружить новые созданные PR-направления. Мне нужно вручную сканировать репо, чтобы его обнаружить. Как только ветка обнаружена, моя Lambda может правильно запускать сборки. Итак, моя проблема - как запустить повторную индексацию ветки или открытие ветки Jenkins в Python? или есть какие-то настройки для этого? без веб-перехватчика github, указывающего на сервер Jenkins?   -  person Chaitanya Bapat    schedule 07.03.2020


Ответы (2)


Согласно официальной документации:

По умолчанию Jenkins не будет автоматически повторно индексировать репозиторий для добавления или удаления ветвей (если не используется папка организации), поэтому часто бывает полезно настроить Multibranch Pipeline для периодической повторной индексации в конфигурации.

person Nick Jones    schedule 08.06.2017

Я полагаюсь на «Периодически, если не запускать иначе» для 1) очистки веток и 2) создания контейнерных заданий для новых репозиториев (я использую «Bitbucket Team / Project», версию Bitbucket «Github Organization», которая в основном создает многоотраслевой конвейер для каждого репо в вашей организации). У меня есть «Периодически, если не запускать иначе», установленный для запуска один раз в день для каждого проекта.

Кажется, что эти вещи могут работать через веб-перехватчик, но, по моему опыту, это не так.

person burnettk    schedule 11.05.2017
comment
Вместо того, чтобы делать это периодически, я хочу использовать лямбда-функцию AWS для обнаружения нового события PR и затем инициировать повторное индексирование. Это возможно? Есть идеи, как это сделать? - person Chaitanya Bapat; 07.03.2020