Как отключить некоторые ветки в Multibranch Jenkins Builds?

10

У меня есть многоотраслевое задание для запуска любой ветки с Jenkinsfile.

У меня есть несколько вариантов, о которых я могу подумать, хочу ли я удалить ветку из списка заданий, выполняемых для многоотраслевого конвейера.

  1. Я могу удалить ветку
  2. Я могу удалить Jenkinsfile в этой ветке

Второе решение хорошо, за исключением того, что мне нужно зафиксировать и отправить это в репозиторий git для моей ветки, и если эта ветка объединяется с другой веткой, это сносит Jenkinsfile.

Каков наилучший способ отключить только некоторые ветви многоотраслевого конвейера?

Дэвид Уэст
источник

Ответы:

17

Jenkins может фильтровать ветви в многоотраслевом конвейере по имени, используя подстановочный знак или регулярное выражение.

ветки фильтра Дженкинса

Кейси Вега
источник
Любой способ сделать это в Jenkinsfile (так что это воспроизводимо)?
xjcl
1
Да, вы можете добавить when { anyOf { branch 'master'; branch 'release/**' } }на любом этапе (в декларативном) или if (env.BRANCH_NAME == 'master' || (env.BRANCH_NAME).startsWith('release/')) {}в сценарии конвейера (почти в любом месте). Для первого варианта есть больше доступных в jenkins.io/doc/book/pipeline/syntax/#when . В любом случае, лучший способ - настроить это в плагине многоотраслевого конвейера, как указано в ответе.
Биолаури
-1

Просто удалите Jenkinsfile на ветке (ветках), для которой вы не хотите иметь соответствующие задания на ветке. Это приведет к удалению задания ветвления (если, конечно, вы правильно установили «Стратегию для осиротевших предметов»).

С точки зрения проекта многоотраслевого конвейера Jenkins это имеет тот же эффект, что и удаление ветви. Это потому, что он просто сканирует ветки, которые содержат Jenkinsfiles в качестве критерия того, когда создавать (или удалять) соответствующее задание ветки.

Верните коммит, чтобы восстановить Jenkinsfile, если / когда вам снова понадобится ветвление.

timblaktu
источник
Это слишком много работы. Когда вы создаете ветку и удаляете файл, вы изменяете историю GIT без уважительной причины. Гораздо лучше фильтровать на уровне Дженкинса, чтобы вам ничего не нужно было делать.
Кейси Вега