我构建了一个
.gitlab-ci-yaml
,看起来像这样并触发两个子管道:
stages:
- prepare
- triggers
include: 'global-gitlab-ci.yaml'
...
frontend:
stage: triggers
trigger:
include: frontend-gitlab-ci.yaml
backend:
stage: triggers
trigger:
include: backend-gitlab-ci.yaml
子管道看起来都是这样的:
stages:
- build
- test
include: 'global-gitlab-ci.yaml'
test_frontend:
stage: test
image: ...
script:
- ...
build_frontend:
stage: build
image: ...
script:
- ...
前端管道(以及后端管道)仅显示一项作业 - 第二项作业将被忽略。
怎么了?子管道不应该包含具有多个作业的完整管道吗?
(顺便说一句 global-gitlab-ci.yaml 仅包含
default:
定义)
这已经很旧了,但对于仍然想知道的人来说......
https://docs.gitlab.com/ee/ci/yaml/#stages
文档并没有真正解释这一点(据我所知),但所有阶段都需要在
.gitlab-ci-yaml
中定义。对于子管道,在定义触发作业的文件中(对于多项目作业可能还有其他注意事项)。
您仅在子 yml 中定义了
build
阶段,因此就管道而言,该阶段不存在。但是, test
阶段是默认/内置阶段,这就是为什么即使您没有在 test
中定义 test
,您的 .gitlab-ci-yaml
阶段作业也会运行。
如果您将示例中的
test
阶段重命名为其他名称,您应该从子管道中收到一条关于需要至少一项可见作业的错误。