GitLab CI/CD-同时使用包括:和需要:

GitLab CI/CD-同时使用包括:和需要:,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我正在使用.gitlab-ci.yml的自动Devops模板。尝试将include:和needs:作为GitLab合作伙伴实验室的一部分使用。CI Lint工具说这是有效的,但管道失败,说“dast:needs'dast\u environment\u deploy'”。在尝试下面的代码之后,我甚至尝试复制整个dast_environment_deploy模板的内容并将其放入文件中,但仍然得到相同的错误 如何使管道文件基于包含:模板使用需求: 图片:阿尔卑斯山:最新版本 阶段: -建造 -试验

我正在使用.gitlab-ci.yml的自动Devops模板。尝试将
include:
needs:
作为GitLab合作伙伴实验室的一部分使用。CI Lint工具说这是有效的,但管道失败,说“dast:needs'dast\u environment\u deploy'”。在尝试下面的代码之后,我甚至尝试复制整个dast_environment_deploy模板的内容并将其放入文件中,但仍然得到相同的错误

如何使管道文件基于
包含:
模板使用
需求:

图片:阿尔卑斯山:最新版本
阶段:
-建造
-试验
-扫描
-按照模板指南部署#虚拟阶段
-复习
-达斯特
-登台
-金丝雀
-生产
-增量卷展10%
-增量卷展25%
-增量卷展50%
-增量卷展100%
-演出
-清理
扫描:
阶段:扫描
触发:
包括:
-模板:Security/License-Scanning.gitlab-ci.yml
-模板:Security/Container-Scanning.gitlab-ci.yml
-模板:Security/Dependency-Scanning.gitlab-ci.yml
审查:
需求:[“构建”]
达斯特:
需求:[“dast_环境_部署”]
sast:
需要:[]
隐藏物:
路径:
-节点单元
包括:
-模板:Jobs/Build.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml
-模板:Jobs/Test.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Test.gitlab-ci.yml
-模板:Jobs/Code-Quality.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml
-模板:Jobs/Code-Intelligence.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Code-Intelligence.gitlab-ci.yml
-模板:Jobs/Deploy.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
-模板:Jobs/Deploy/ECS.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/ECS.gitlab-ci.yml
-模板:Jobs/Deploy/EC2.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/EC2.gitlab-ci.yml
-模板:Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml
-模板:Jobs/Browser-Performance-Testing.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml
-模板:Security/DAST.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml
-模板:Security/SAST.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
-模板:Security/Secret-Detection.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/Secret-Detection.gitlab-ci.yml

我没有查看您包含的每个模板,但根据错误和我查看的少数模板,错误很可能是由于
需要
关键字需要一个作业,而该作业由于
when
条件或
规则:if
条件而未添加到管道中

如果一个作业
需要另一个作业,而另一个作业没有添加到管道中(实际运行的管道实例,而不是.gitlab ci.yml中的管道定义),则在运行时yml将被视为无效。您可以在文档中看到
需求
的所有要求和限制:


查看第一个包含的模板,
-template:Jobs/Build.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml
build
build\u工件
作业都有可能导致作业未添加到管道的规则。例如,如果变量
$AUTO\u DEVOPS\u PLATFORM\u TARGET
不是“EC2”,则不会添加任何作业,因此
需要这些作业的任何作业都会抛出YML错误。

我没有查看您包含的每个模板,但基于错误和我查看的少数模板,该错误最有可能是由于
when
条件或
规则:if
条件导致
needs
关键字需要未添加到管道中的作业而导致的

如果一个作业
需要另一个作业,而另一个作业没有添加到管道中(实际运行的管道实例,而不是.gitlab ci.yml中的管道定义),则在运行时yml将被视为无效。您可以在文档中看到
需求
的所有要求和限制:


查看第一个包含的模板,
-template:Jobs/Build.gitlab-ci.yml#https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml
build
build\u工件
作业都有可能导致作业未添加到管道的规则。例如,如果变量
$AUTO\u DEVOPS\u PLATFORM\u TARGET
不是“EC2”,则不会添加任何作业,因此
需要这些作业的任何作业都会抛出YML错误。

看起来可能是后续模板之一中的规则问题。乍一看,我没有发现问题,但有人向我建议了这一点,我需要进一步查看规则。在随后的模板中,它可能是一个规则问题。乍一看,我没有发现任何问题,但有人向我建议了这一点,我需要进一步审查规则。