如何将GitLab变量扩展与YAML锚点结合起来?

问题描述 投票:0回答:1

我的.gitlab-ci.yml中有类似的东西:

.templates:
  - &deploy-master-common
    script:
      - ansible-playbook … --limit=${environment:name}.example.org
    environment:
      url: https://${environment:name}.example.org
…
deploy-master1:
  <<: *deploy-master-common
  environment:
    name: master1
  only:
    - master

不幸的是,在运行deploy-master1作业时,${environment:name}被扩展为空字符串。 YAML / GitLab CI不支持这种扩展吗?


我还不知道这是GitLab还是YAML限制,但看起来environment哈希被替换而不是合并。将<<: *deploy-master-common移动到deploy-master1的底部我从GitLab CI lint API端点收到以下错误消息:

.gitlab-ci.yml is not valid. Errors:
[
  "jobs:deploy-master1:environment name can't be blank"
]
gitlab yaml gitlab-ci
1个回答
0
投票

我能够使用自定义变量来解决这个问题,因为模板没有指定任何变量:

.templates:
  - &deploy-master-common
    script:
      - ansible-playbook … --limit=${environment_name}.example.com
    environment:
      name: $environment_name
      url: https://${environment_name}.example.com
…
deploy-master1:
  <<: *deploy-master-common
  variables:
    environment_name: master1
  only:
    - master
© www.soinside.com 2019 - 2024. All rights reserved.