我有下面的管道。创建合并请求后,创建了状态为失败的分离合并请求管道(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)
如果您想在创建合并请求时以及合并到主分支后运行管道,请查看以下示例:
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)
| 归档时间: |
|
| 查看次数: |
19971 次 |
| 最近记录: |