Скрипт 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, начнут работать.

Другие вопросы по тегам