Gitlab CI 忽略子管道中的作业

问题描述 投票:0回答:1

我构建了一个

.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:
    - ...

当我运行此管道时,我得到以下信息: enter image description here

前端管道(以及后端管道)仅显示一项作业 - 第二项作业将被忽略。

怎么了?子管道不应该包含具有多个作业的完整管道吗?

(顺便说一句 global-gitlab-ci.yaml 仅包含

default:
定义)

gitlab gitlab-ci
1个回答
0
投票

这已经很旧了,但对于仍然想知道的人来说......

https://docs.gitlab.com/ee/ci/yaml/#stages

文档并没有真正解释这一点(据我所知),但所有阶段都需要在

.gitlab-ci-yaml
中定义。对于子管道,在定义触发作业的文件中(对于多项目作业可能还有其他注意事项)。

您仅在子 yml 中定义了

build
阶段,因此就管道而言,该阶段不存在。但是,
test
阶段是默认/内置阶段,这就是为什么即使您没有在
test
中定义
test
,您的
.gitlab-ci-yaml
阶段作业也会运行。

如果您将示例中的

test
阶段重命名为其他名称,您应该从子管道中收到一条关于需要至少一项可见作业的错误。

© www.soinside.com 2019 - 2024. All rights reserved.