我的.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"
]
我能够使用自定义变量来解决这个问题,因为模板没有指定任何变量:
.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