Gitlab 并将隐藏的关键脚本放入包含文件中
2019-03-22
2080
我有几个不同的脚本,我想在多个项目的各个阶段运行它们。目前它们的形式如下:
.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
我做错了什么,还是这是包含的实际限制(因此不受支持)?
有什么替代方法可以清理我的
.gitlab-ci.yml
文件?
3个回答
bcannell
2021-06-18
这几乎肯定是包含的限制(使用标签明确实现会更好)。
标准 YAML 加载包括 解析、编写和构造阶段。 别名在编写阶段得到解析,而锚点(例如)不会延续到多文档 YAML 文件中的下一个文档。
虽然
include
键可能在构建阶段早期被解释(但这也可能发生在完成该阶段之后,解释生成的数据结构),但包含 YAML 中的别名将需要在其撰写阶段进行解析。
使用一些模板系统 jinja2 会更幸运,当然,您也可以使用通用阶段从 YAML 文件中填充要替换的变量。
Anthon
2019-03-22
您是否尝试过使用
extends
?
文档
示例:
include:
- remote: https://gitlab/project/master/raw/hidden_key.yml
real_job:
extends: .hidden_key
Rob Paisley
2020-05-05