我如何 运行 **主要 CI 作业 **或** 包含的配置?
How do I run **either** the main CI jobs **or** an included configuration?
所以我有这个 GitLab CI 配置,其中我的主要 .gitlab-ci.yml
文件如下所示:
include:
- local: '/path/to/local/configuration.yml'
test:
script:
- echo "hello world"
# ...
# lots of more jobs here
我想要实现的是 运行 要么 configuration.yml
要么 全部.gitlab-ci.yml
.
中的工作 (~30)
禁用一项工作很容易,因为我可以在 configuration.yml
中包含一个 workflow:
配置,这让我可以选择性地 enable/disable 该配置。
但是我在 .gitlab-ci.yml
中做什么?我试过
workflow:
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE'
when: never
- when: always
但似乎 GitLab 读取了此配置,其他配置也被忽略,因为如果设置 $DONT_RUN_DEFAULT_PIPELINE
.
则根本不会创建管道
我真的必须一一修改 .gitlab-ci.yml
中的所有现有工作吗?
您最好使用条件包含。
获取 30 个作业并将它们提取到一个自己的 yaml 文件中,我们称之为 default.gitlab-ci.yml
。
使用 GitLab 的最新版本,您可以获得条件包含,并且可以执行以下操作:
include:
- local: '/path/to/local/configuration.yml'
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE == "true"'
- local: 'default.gitlab-ci.yml'
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE != "true"'
见https://docs.gitlab.com/ee/ci/yaml/index.html#rules-with-include
请注意,此功能自 GitLab 14.3 起可用
示例使用 Child / Parent Pipelines:
trigger_default:
trigger:
include: default.yml
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE != "true"'
trigger_special:
trigger:
include: special.yml
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE == "true"'
所以我有这个 GitLab CI 配置,其中我的主要 .gitlab-ci.yml
文件如下所示:
include:
- local: '/path/to/local/configuration.yml'
test:
script:
- echo "hello world"
# ...
# lots of more jobs here
我想要实现的是 运行 要么 configuration.yml
要么 全部.gitlab-ci.yml
.
禁用一项工作很容易,因为我可以在 configuration.yml
中包含一个 workflow:
配置,这让我可以选择性地 enable/disable 该配置。
但是我在 .gitlab-ci.yml
中做什么?我试过
workflow:
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE'
when: never
- when: always
但似乎 GitLab 读取了此配置,其他配置也被忽略,因为如果设置 $DONT_RUN_DEFAULT_PIPELINE
.
我真的必须一一修改 .gitlab-ci.yml
中的所有现有工作吗?
您最好使用条件包含。
获取 30 个作业并将它们提取到一个自己的 yaml 文件中,我们称之为 default.gitlab-ci.yml
。
使用 GitLab 的最新版本,您可以获得条件包含,并且可以执行以下操作:
include:
- local: '/path/to/local/configuration.yml'
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE == "true"'
- local: 'default.gitlab-ci.yml'
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE != "true"'
见https://docs.gitlab.com/ee/ci/yaml/index.html#rules-with-include
请注意,此功能自 GitLab 14.3 起可用
示例使用 Child / Parent Pipelines:
trigger_default:
trigger:
include: default.yml
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE != "true"'
trigger_special:
trigger:
include: special.yml
rules:
- if: '$DONT_RUN_DEFAULT_PIPELINE == "true"'