У меня есть конвейер с 3 этапами: build
, deploy-test
и deploy-prod
. Я хочу, чтобы этапы имели следующее поведение:
- всегда запускать
build
- запускать
deploy-test
автоматически при master
или вручную при других ветвях - запустить
deploy-prod
вручную, доступно только для master
branch
Моя конфигурация конвейера, кажется, достигает этого, но у меня есть проблема при попытке объединить ветви в master. Я не хочу выполнять deploy-test
stage для каждой ветви перед слиянием. Сейчас я должен сделать это, поскольку кнопка слияния отключена с сообщением Pipeline blocked. The pipeline for this merge request requires a manual action to proceed
. Параметр Pipelines must succeed
в проекте отключен.
Я попытался добавить дополнительное правило, чтобы запретить запуск этапа deploy-test
в запросах на слияние, но ничего не изменилось:
rules:
- if: '$CI_MERGE_REQUEST_ID'
when: never
- if: '$CI_COMMIT_BRANCH == "master"'
when: on_success
- when: manual
Полный Конфигурация трубопровода:
stages:
- build
- deploy-test
- deploy-prod
build:
stage: build
script:
- echo "build"
deploy-test:
stage: deploy-test
script:
- echo "deploy-test"
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: on_success
- when: manual
deploy-prod:
stage: deploy-prod
script:
- echo "deploy-prod"
only:
- master