Как определить правила в «этапах» gitlab, чтобы не нужно было определять отдельные правила для заданий
Предположим, есть 4 задания, которые определяются поэтапно.
этапы:
- строить
- контрольная работа
- развертывать
- загрузить
Теперь тестирование, развертывание и загрузка запускаются только при ручном запуске конвейера. Для этого мы можем определить правило для отдельных заданий, но оно будет повторяться (не хочу использовать это).
Можно ли определить правило для « этапов », чтобы одно задание запускалось при автоматическом запуске, а остальные 3 задания выполнялись при ручном запуске конвейера.
2 ответа
Боюсь, в данный момент невозможно применить правило ко всей стадии.
Возможный обходной путь — разместить все задания этапа в отдельном файле шаблона. Это включаемое действие может иметь правило [1].
пример: шаблон.yml
job1:
stage: test
script:
- run_tests
job2:
stage: deploy
script:
- do_deployment
job3:
stage: upload
script:
- do_the_uploading
.gitlab-ci.yml:
include:
- local: 'template.yml'
rule:
- your_rule_here
stages:
- build
- test
- deploy
- upload
build_job:
stage: build
script:
- gcc sourcecode.cpp
Я знаю, что это поздний ответ, но я нашел решение, столкнувшись с этим сценарием.
Используйте рабочий процесс для управления поведением конвейера (представлено в GitLab 12.5) https://docs.gitlab.com/ee/ci/yaml/index.html#workflow
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH