Как запустить работу gitlab-ci.yml только на отмеченной ветке?
Как выполнить задание .gitlab-ci.yml только на отмеченной ветке мастера?
job:
script:
- echo "Do something"
only:
- master
- tags
Вышеприведенный код будет работать, если любое условие существует: главная ветвь или помеченная фиксация.
Моя цель - запустить этот запуск для развертывания производства, но для этого потребуется, чтобы он находился на ветке мастера и был помечен тегом (с версией). В противном случае у меня будет другая работа, которая будет продвигаться вперед, если отсутствует тег.
Ответы
Ответ 1
Это поведение пока не поддерживается gitlab-ci, хотя есть открытая проблема, чтобы добавить его.
Тем временем я также слышал анекдотические сообщения о том, что
only:
- master
only:
- tags
выполнит задание (а также анонимные отчеты, которые он не будет).
Ответ 2
Я заставил это работать, и это мой рабочий фрагмент кода, все остальные не работали на меня
only:
- tags # please mention the 's' compared to Sergio Tomasello solution
except:
- branches
Я использую 11.4.3
Ответ 3
Это поведение будет введено в версии 12.
Открытая проблема была недавно обновлена:
Джейсон Ленни @jlenny изменил название с {-Update.gitlab-ci.yml для поддержки логики коннектов для сборки conditions-} на логику конъюнкций для условий сборки MVC · 2 дня назад
Джейсон Ленни @jlenny изменил веху на 12.0 · 2 дня назад
(скрещенные пальцы)
Решение состоит в том, чтобы использовать ключевое слово except
чтобы исключить все ветки, вместе с тем, чтобы запускать only
теги, таким образом, вы запускаете свой конвейер только для тега в главной ветки:
only:
- tags
except:
- branches
Я использую версию 11.3.4
Ответ 4
Спасибо другим, таким как Мэтт Алиото, который написал об открытом выпуске (который обозначен как Product Vision 2019
так что, надеюсь, в этом году он его выбьет).
В отношении вопроса Карлсона Коула это будет работать:
job_for_master_no_tags:
stage: deploy
script:
- echo "Release to Staging"
only:
- master
job_for_master_tags_only:
stage: deploy
script:
- echo "Release to Production"
only:
- tags
except:
- /^(?!master)[email protected]/ # Ruby RegEx for anything not starting with 'master'
- Чтобы увидеть, как работает этот RegEx, проверьте https://rubular.com/r/1en2eblDzRP5Ha
- Я проверил это на GitLab версии 11.7.0, и это работает
- Примечание: если вы попытаетесь использовать
-/^(?!master).+/
(без @
), это не сработает, узнал, что трудный путь 😕