Скрипт Gitlab CI: исключить ветки
Я пытаюсь улучшить сценарий сборки проекта, описанный в YML-файле, само улучшение кажется довольно тривиальным, но сама идея случайно испортить автоматические сборки меня немного пугает.
Сейчас в проекте есть несколько веток, тегов версий и прочего.
Полезно было бы использовать ветвь разработки, созданную не бегунами, поскольку копирование огромного проекта между виртуальными машинами для тестирования сборки на разных платформах вообще не удобно. Итак, я хочу исключить из сборок некоторую ветку "prj-dev".
И там мы имеем:
stages:
- build
- linuxbuild
job:
tags:
- win2008build
stage: build
script:
# something complex
job1:
tags:
- linux
stage: linuxbuild
script:
# something else complex
Я гуглил и нашел решение вроде:
stages:
- build
- linuxbuild
job:
tags:
- win2008build
branches:
except:
- *dev-only
Но кажется, что наши конвейеры совершенно разные, теги - это не теги git, а теги конвейера. Итак, я предпочитаю использовать конфигурацию как:
stages:
- build
- linuxbuild
job:
tags:
- win2008build
except:
branches:
- *dev-only
... что означало бы "строить как обычно, но не мою ветку". Существуют сложности при попытке обоих способов, я уверен, что кто-то должен знать рецепт наверняка.
Итак, если хотите, - как мне исключить мою ветку dev без изменения конвейеров, только для конфигурации? Это вообще возможно?
1 ответ
Все, что вам нужно сделать, это использовать except
в gitlab-ci.yml
файл и добавьте ваши ветви прямо ниже, как это:
mybuild:
stage: test
image: somedockerimage
script:
- some script running
except:
- branch-name
Это работает над моим проектом без проблем.
@blurryroots Что-то вроде... В случае коммерческого развертывания вы обычно делаете ответвления для определенных функций и снова сливаетесь с master. Ветвь, созданная из мастера, может называться как угодно, например, "Dev1-Metrics-Feature-Logger", это, в свою очередь, означает, что если бы вы использовали тег "Only", чтобы конвейер работал только в ветвях разработки, вам нужно было бы изменить скрипт. каждый раз, когда создается новая ветка, поэтому "except" будет работать лучше> Запустите тестирование всего "EXCEPT" master, а затем, когда вы объединитесь с master, другие задания, предназначенные для master, начнут работать.