gitlab-ci 用子值替换父变量

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

我的父文件:

.dev_vars: &dev_vars {}

deploy-dev:
  variables:
    <<: *dev_vars
  script:
  - echo "URL=$URL"

我的孩子档案:

include:
  - project: 'ci-parent'
    ref: 'main'
    file: 
      - my-gitlab-ci.yml 

.dev_vars: &dev_vars
  URL: http://my-dev_url

URL 值为空,我希望它是 http://my-dev_url

gitlab-ci
1个回答
0
投票

https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#anchors

使用时不能跨多个文件使用 YAML 锚点 包括关键字。锚点仅在定义它们的文件中有效 在.

是因为先渲染父文件,然后包含在子文件中。

因此,最终渲染的

.gitlab-ci.yml
看起来像这样:

".dev_vars":
  URL: http://my-dev_url
deploy-dev:
  variables: {}
  script:
  - echo "URL=$URL"

要在不触及结构的情况下解决问题,可以使用全局变量:

子文件:

include:
  - project: 'ci-parent'
    ref: 'main'
    file: 
      - my-gitlab-ci.yml 

variables:
  URL: http://my-dev_url
© www.soinside.com 2019 - 2024. All rights reserved.