Как объединить расширение переменных GitLab с якорями YAML? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть что-то подобное в моем .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 Я получаю следующее сообщение об ошибке от конечной точки API GitLab CI lint:

.gitlab-ci.yml is not valid. Errors:
[
  "jobs:deploy-master1:environment name can't be blank"
]

1 Ответ

0 голосов
/ 03 апреля 2019

Мне удалось обойти это с помощью пользовательских переменных, потому что шаблон не указывает никаких:

.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
...