# #continuous-integration #gitlab #gitlab-ci #pipeline #continuous-deployment
Вопрос:
У меня есть 3 этапа сборки,DEV_DEPLOY,QA_DEPLOY
Я хочу запустить сборку как для этапов DEV_DEPLOY, так и для QA_DEPLOY. Объяснено ниже на скриншоте. Для меня, когда я сливаюсь с QA, выполняется только QA_DEPLOY, сборка не выполняется.
Требование — Когда разработчик запускает сборку и развертывание кода на этапе разработки , должен выполняться, когда руководитель группы объединяет ветвь из разработки в ветвь контроля качества, снова должна выполняться сборка и развертывание в контроль качества.
stages:
- build_proj
- dev_deploy
- qa_release
build:
stage: build_proj
script:
- run build
dev_deploy:
stage: dev_develop
environment: DEV
only:
- develop
qa_release:
stage: qa_release
dependencies:
- build_proj
environment: QA
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "develop"
Ответ №1:
Вы можете попробовать следующие правила в своем конвейере:
stages:
- build
- deploy
build:
stage: build
script:
- echo "run build"
rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" amp;amp; $CI_MERGE_REQUEST_TARGET_BRANCH == "release"'
dev_deploy:
stage: deploy
script:
- echo "deploy dev"
environment: DEV
rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
qa_release:
stage: deploy
script:
- echo "deploy release"
environment: QA
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" amp;amp; $CI_MERGE_REQUEST_TARGET_BRANCH == "release"'
build
этап выполняется только при выполнении коммитов дляdevelop
запросов на слияние и для них вrelease
веткеdev_deploy
этап выполняется только для фиксации наdevelop
qa_release
этап выполняется только для запросов на слияние вrelease
ветку