我正在为我的.gitlab-ci.yml编写Auto-Devops模板。尝试使用include:和needs:作为GitLab合作伙伴实验的一部分。CI Lint工具说这是有效的,但是管道失败了,说"dast: needs 'dast_environment_deploy'“。在尝试下面的代码之后,我甚至尝试复制整个dast_environment_deploy模板的内容并将其放入文件中,仍然得到相同的错误。
如何让我的管道文件使用基于include:模板的needs:?
image: alpine:latest
stages:
- build
- test
- scan
- deploy # dummy stage to follow the template guidelines
- review
- dast
- staging
- canary
- production
- incremental rollout 10%
- incremental rollout 25%
- incremental rollout 50%
- incremental rollout 100%
- performance
- cleanup
scan:
stage: scan
trigger:
include:
- template: Security/License-Scanning.gitlab-ci.yml
- template: Security/Container-Scanning.gitlab-ci.yml
- template: Security/Dependency-Scanning.gitlab-ci.yml
review:
needs: ["build"]
dast:
needs: ["dast_environment_deploy"]
sast:
needs: []
cache:
paths:
- node_modules
include:
- template: Jobs/Build.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml
- template: Jobs/Test.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Test.gitlab-ci.yml
- template: Jobs/Code-Quality.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Code-Quality.gitlab-ci.yml
- template: Jobs/Code-Intelligence.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Code-Intelligence.gitlab-ci.yml
- template: Jobs/Deploy.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
- template: Jobs/Deploy/ECS.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/ECS.gitlab-ci.yml
- template: Jobs/Deploy/EC2.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy/EC2.gitlab-ci.yml
- template: 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
- template: 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
- template: Security/DAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml
- template: Security/SAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml
- template: Security/Secret-Detection.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/Secret-Detection.gitlab-ci.yml发布于 2021-01-27 04:08:21
我没有检查您包含的每个模板,但根据错误和我检查的少数几个,错误很可能是由needs关键字引起的,该关键字由于when条件或rules:if条件而没有添加到管道中。
如果一个作业needs另一个作业,并且另一个作业没有添加到管道中(实际运行的管道实例,而不是.gitlab-ci.yml中的管道定义),则yml在运行时被视为无效。您可以在文档中查看needs的所有要求和限制:https://docs.gitlab.com/ee/ci/yaml/#requirements-and-limitations
查看第一个包含的模板- 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_artifact作业都有可能导致作业不被添加到管道中的规则。例如,如果变量$AUTO_DEVOPS_PLATFORM_TARGET不是"EC2“,那么这两个作业都不会被添加,所以needs这些作业的任何作业都将抛出YML错误。
https://stackoverflow.com/questions/65413896
复制相似问题