我有多少个要在多个项目中的各个阶段中运行的不同脚本。目前,它们的格式为:
.hidden_key: &hidden_key |
do_something
do_something_else
real_job:
script:
- *hidden_key
实际上,.hidden_key
是我在整个.gitlab-ci.yml
文件以及跨多个项目使用的一种功能。但是,当我将.hidden_key
移入文件并像这样包含它时,似乎无法使包含起作用:
include:
- remote: https://gitlab/project/master/raw/hidden_key.yml
real_job:
script:
- *hidden_key
当我这样做时,gitlab抱怨:
Error: Unknown alias: hidden_key
我做错了什么吗?或者这是对include的实际限制(因此不受支持)?
有什么替代方法可以清理我的.gitlab-ci.yml
文件?
答案 0 :(得分:0)
几乎可以肯定,这是includes的限制(最好使用标签显式实现)。
标准YAML加载由parse, a compose and a construction phase.组成,别名在撰写阶段得到解析,并且锚点例如不要将其转移到多文档YAML文件中的下一个文档。
尽管可以将include
密钥解释为构造阶段的早期内容(但是也可能在完成该阶段之后解释所生成的数据结构),然后包括YAML在内的别名已经需要在撰写阶段就解决了。
使用某些模板系统jinja2会给您带来更多的运气,当然您也可以为此填充YAML文件中具有常见阶段的变量。
答案 1 :(得分:0)
他们添加了 !references
标签
https://docs.gitlab.com/ee/ci/yaml/README.html#reference-tags
本质上,这就是你如何完成对别名的引用
include:
- remote: https://gitlab/project/master/raw/hidden_key.yml
real_job:
script:
- !reference [.hidden_key]