Gitlab CI强制我在使用多个包含时定义阶段

Gitlab CI强制我在使用多个包含时定义阶段,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我有一个基本文件。gitlab-ci.yml: include: - project: 'my-group/my-project' file: 'test1.yml' test1.yml: stages: -test_stage1 test_stage1: stage: test_stage1 script: //some script 它工作正常,测试阶段1成功运行 现在,如果我还想包括其他文件: include: - project: 'my-group/my-p

我有一个基本文件。gitlab-ci.yml:

include:
  - project: 'my-group/my-project'
    file: 'test1.yml'
test1.yml:

stages:
 -test_stage1

test_stage1:
 stage: test_stage1
 script: //some script
它工作正常,测试阶段1成功运行

现在,如果我还想包括其他文件:

include:
  - project: 'my-group/my-project'
    file: 'test1.yml'
  - project: 'my-group/my-project'
    file: 'test2.yml'
test2.yml:

stages:
 -test_stage2

test_stage2:
 stage: test_stage2
 script: //some script
我得到以下错误:

此GitLab CI配置无效:测试阶段作业:阶段 参数应为测试阶段2

因此,我必须明确添加阶段:

    include:
      - project: 'my-group/my-project'
        file: 'test1.yml'
      - project: 'my-group/my-project'
        file: 'test2.yml'
   stages:
      -test_stage1
      -test_stage2
而且很有效。

为什么会这样?
我是否能够以某种方式只包含多个文件,并且在不声明它们的情况下遍历它们的所有阶段?

您需要定义阶段,以便GitLab CI知道阶段的顺序

我是否能够以某种方式只包含多个文件,并在不声明它们的情况下完成它们的所有阶段

如果你想有多个阶段,就不需要了。您需要告诉GitLab CI哪个阶段是第一阶段、第二阶段等,以便在进入下一阶段之前可以运行每个阶段的所有作业。这给了我们一条管道


顺便说一下,默认阶段是测试。如果您没有为作业提供
stage
属性,它将被分配到
test
阶段。

但是为什么gitlab不按照包含文件的阶段顺序构建管道呢?我理解您的意思。这就是GitLab CI的工作原理。一旦声明了阶段序列,GitLab将确保作业按该序列(阶段)运行,而不管它们在YAML文件中的显示顺序。