Gitlab CI 根据合并请求自动运行管道

Cat*_*ver 1 pipeline gitlab

我有下面的管道。创建合并请求后,创建了状态为失败的分离合并请求管道(app1 - 无阶段/作业)。在以下管道的范围内,需要在创建合并请求时以及合并更改 main 后运行管道。这里描述的流程Gitlab CI Child pipeline 下面的管道不起作用。


workflow:
    rules:
        - if: '$CI_PIPELINE_SOURCE == "schedule"'
        - if: '$CI_PIPELINE_SOURCE == "web"'
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
        - if: '$CI_PIPELINE_SOURCE == "push"'

stages:
    - child-pipelines

app1:
    stage: child-pipelines
    variables:
        COMPONENT NAME: 'app1'
    trigger:
        include:
        - local: .ci/.gitlab-ci.yml
        strategy: depend
    rules:

        - if: $CI_PIPELINE_SOURCE == "merge_request_event"
          changes:
            - test1/**/*
          variables:
            DEPLOY_RELEASE: '11111'

        - if : '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main"'
          changes:
            - test1/**/*
          variables:
            DEPLOY_RELEASE: '222222'
app2:
    stage: child-pipelines
    variables:
        COMPONENT NAME: 'app1'
    trigger:
        include:
        - local: .ci/.gitlab-ci.yml
        strategy: depend
    rules:

        - if: $CI_PIPELINE_SOURCE == "merge_request_event"
          changes:
            - test2/**/*
          variables:
            DEPLOY_RELEASE: '11111'

        - if : '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main"'
          changes:
            - test2/**/*
          variables:
            DEPLOY_RELEASE: '222222'


Run Code Online (Sandbox Code Playgroud)

Ale*_*tes 6

如果您想在创建合并请求时以及合并到主分支后运行管道,请查看以下示例:

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
    
job1:
  script:
    - echo "This job runs in merge request and also after merge to main branch"
Run Code Online (Sandbox Code Playgroud)

根据Gitlab 文档。

如果您想对整个管道运行规则:

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
  
job1:
  script:
    - echo "This job runs in merge request pipelines"
    
job2:
  script:
    - echo "This job also runs in merge request pipelines"
Run Code Online (Sandbox Code Playgroud)

如果您想在某些作业中运行规则:

job1:
  script:
    - echo "This job runs in merge request pipelines"
  only:
    - merge_requests
Run Code Online (Sandbox Code Playgroud)