我正在尝试配置一个 CI 管道,其中包含其他项目的作业,但仅用于合并请求。根据 GitLab 文档,我可以将
rules
与 include 一起使用,并且那里支持 $CI_PIPELINE_SOURCE
,但是以下命令根本不运行包含的作业:
include:
- project: "configs/gitlab-ci"
file: "checks.gitlab-ci.yml"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
使用相同的规则,我可以选择本地定义的作业在合并请求中运行,但它不适用于包含。除了上面链接的文档之外,我还没有真正找到任何关于该主题的有用信息。
如何使包含仅适用于合并请求?
我目前有一个类似的设置,我只想包含一些仅用于计划管道的内容。这对我有用:
include:
- project: project_name
file:
- gitlab-ci.yml
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"' # Only include on scheduled pipelines for now
所以我认为以下内容应该适合您:
include:
- project: "configs/gitlab-ci"
file: "checks.gitlab-ci.yml"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
我发现了一个描述此问题的 GitLab 问题:gitlab-org/gitlab#393232 所以看来这至少现在已经被破坏了。