Gitlab并将隐藏的密钥脚本放入包含文件

Gitlab并将隐藏的密钥脚本放入包含文件,gitlab,yaml,aliases,Gitlab,Yaml,Aliases,我有几个不同的脚本,我想在多个项目的不同阶段运行。目前它们的形式如下: .hidden_key: &hidden_key | do_something do_something_else real_job: script: - *hidden_key 实际上,.hidden_key是我在整个.gitlab ci.yml文件中以及几个项目中使用的函数。但是当我将.hidden\u key移动到一个文件中并像这样包含它时,我似乎无法让include起作用: incl

我有几个不同的脚本,我想在多个项目的不同阶段运行。目前它们的形式如下:

.hidden_key:  &hidden_key |
  do_something
  do_something_else

real_job:
  script:
    - *hidden_key
实际上,
.hidden_key
是我在整个
.gitlab ci.yml
文件中以及几个项目中使用的函数。但是当我将
.hidden\u key
移动到一个文件中并像这样包含它时,我似乎无法让include起作用:

include:
   - remote: https://gitlab/project/master/raw/hidden_key.yml

real_job:
  script:
    - *hidden_key
当我这样做时,gitlab抱怨:

Error: Unknown alias: hidden_key
我是否做得不对,或者这是包含的实际限制(因此不受支持)


有什么替代方法来清理我的
.gitlab ci.yml
文件?

这几乎肯定是includes的一个限制(使用标记显式实现更好)

标准YAML加载包括在编写阶段解析别名,以及锚定(例如,不结转到多文档YAML文件中的下一个文档)

尽管
include
键可能在构建阶段的早期就被解释(但这也可能发生在完成该阶段、解释结果数据结构之后),但是include YAML中的别名在其编写阶段就已经需要被解析了


使用一些模板系统jinja2会更幸运,当然,您也可以使用公共阶段从YAML文件中填充要替换的变量。

您尝试过使用
扩展吗

例如:

include:
   - remote: https://gitlab/project/master/raw/hidden_key.yml

real_job:
  extends: .hidden_key

您是否建议我在.gitlab-ci.yml文件中使用jinja2模板?或者我应该通过脚本使用jinja2模板创建该文件?如果是后者,gitlab可以通过提交触发器或其他方式自动完成吗?如果是这样的话,最欢迎指向解释这一点的文档的指针!谢谢你的回复,顺便说一句,非常感谢!我不知道这是否可以在gitlab内完成。我实现了一个新命令,生成docker compose期望的YAML文件,然后调用docker compose,这与docker compose类似(提供了不可用的功能)。并且通过在文档的后端运行预处理器,在readthedocs.org上支持基于YAML的文档文件格式。后者是可能的,因为它们允许python代码在沙箱中运行,gitlab需要提供类似的东西,但我不知道它是否提供。