Continuous integration Gitlab-始终为每个阶段运行构建

Continuous integration Gitlab-始终为每个阶段运行构建,continuous-integration,gitlab,gitlab-ci,pipeline,continuous-deployment,Continuous Integration,Gitlab,Gitlab Ci,Pipeline,Continuous Deployment,我有3个阶段的构建,开发部署,QA部署 我想为DEV_DEPLOY和QA_DEPLOY这两个阶段运行构建。在下面的屏幕截图中解释。对我来说,当我合并到QA时,只有QA_部署正在运行,而构建没有运行 需求-当开发人员将代码构建和部署推到开发阶段时,应该运行,当团队负责人将开发分支合并到qa分支时,构建和部署到qa应该运行 stages: - build_proj - dev_deploy - qa_release build: stage: buil

我有3个阶段的构建,开发部署,QA部署

我想为DEV_DEPLOY和QA_DEPLOY这两个阶段运行构建。在下面的屏幕截图中解释。对我来说,当我合并到QA时,只有QA_部署正在运行,而构建没有运行

需求-当开发人员将代码构建和部署推到开发阶段时,应该运行,当团队负责人将开发分支合并到qa分支时,构建和部署到qa应该运行

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"
 

您可以在管道中尝试以下规则:

stages:
  - build
  - deploy      
  
build: 
  stage: build
  script:
    -  echo "run build"
  rules:
    - if: '$CI_COMMIT_BRANCH == "develop"' 
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $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" && $CI_MERGE_REQUEST_TARGET_BRANCH == "release"'  
  • build
    阶段仅在提交到
    develope
    并将请求合并到
    发布
    分支时运行
  • dev_deploy
    阶段仅在
    develop
  • qa_release
    阶段仅用于将请求合并到
    release
    分支中