Gitlab并将隐藏的关键脚本放入包含文件

时间:2019-03-22 17:21:02

标签: gitlab yaml aliases

我有多少个要在多个项目中的各个阶段中运行的不同脚本。目前,它们的格式为:

.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文件?

2 个答案:

答案 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]