Я настроил несколько заданий 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 через веб-перехватчик), но временная метка в моем журнале индексирования, похоже, опровергает это.
Итак, что я наблюдаю за предполагаемым поведением? Если да, и мне нужна регулярная очистка старых веток, нужно ли мне устанавливать флажок «Периодически, если не запускать иначе» в разделе «Триггеры сканирования репозитория»? Или что-то не так с моей настройкой, что мешает ей работать должным образом?