开发者问题收集

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个回答

他们添加了 !标签

本质上,这就是您可以完成对别名的参考

642308728
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