是否可以从另一个 .gitlab-ci.yml 文件包含/扩展锚点?
我正在尝试从另一个yaml文件中的一个yaml文件重复使用锚点,
parent-gitlab-ci.yml
310213466
Child-Gitlab -ci.yml
739466122
,但我遇到了错误 - '此gitlab ci配置无效:未知别名:basic_check1'。有什么解决方案吗?我想包括两个锚点的脚本。尝试将模板作业与脚本一起用作黑客攻击,但不能解决我的问题,因为我不能在作业中有两个脚本来模仿上面的两个锚。
官方文档中仍有大量关于 yaml 锚点的段落……但这已经过时了。您总是有更好的替代方案(更简洁和/或跨文件)。
这里有一个适合您用例的:
.templates.gitlab-ci.yml
.basic_check1:
script:
- echo "basic check1"
.basic_check2:
script:
- echo "basic check2"
.gitlab-ci.yml
include:
- .templates.gitlab-ci.yml
job1:
stage: test
script:
- !reference [.basic_check1, script]
- !reference [.basic_check2, script]
假设您有超过 2 个代码块需要合并,否则您只需进行一些扩展并使用 before_script/script。
You can’t use YAML anchors across multiple files when using the include keyword. Anchors are only valid in the file they were defined in. To reuse configuration from different YAML files, use !reference tags or the extends keyword.
来自: https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html
还可以使用“extends”从其他文件中重用锚点。您可以使用以下语法扩展整个 .basic_check1:
include:
- .templates.gitlab-ci.yml
job1:
stage: test
extends:
- .basic_check1
编译后的 job1 为:
job1:
stage: test
script:
- echo "basic check1"