我正在尝试创建一个非常抽象的.yaml
-配置,该配置可以在不同的地方重复使用。
现在看起来像这样:
.release: &release
stage: release
script:
- docker tag $IMAGE_TESTING $IMAGE_RELEASE
- docker push $IMAGE_RELEASE
only:
- master
when: manual
.amd64: &amd64
BASE_ARCH: 'amd64'
.debalike: &debalike
FLAVOUR: 'debalike'
release_debalike_amd64:
<<: *release
variables:
<< : [*amd64, *debalike]
正确解析为...的
.release:
stage: release
script:
- 'docker tag $IMAGE_TESTING $IMAGE_RELEASE'
- 'docker push $IMAGE_RELEASE'
only:
- master
when: manual
.amd64:
BASE_ARCH: amd64
.debalike:
FLAVOUR: debalike
release_debalike_amd64:
stage: release
script:
- 'docker tag $IMAGE_TESTING $IMAGE_RELEASE'
- 'docker push $IMAGE_RELEASE'
only:
- master
when: manual
variables:
BASE_ARCH: amd64
FLAVOUR: debalike
这是理想的行为。
但是有可能避免使用release_debalike_amd64
中的变量标签,而直接使用锚点吗?
与此类似的东西(不起作用):
.release: &release
stage: release
script:
- docker tag $IMAGE_TESTING $IMAGE_RELEASE
- docker push $IMAGE_RELEASE
only:
- master
when: manual
.amd64: &amd64
variables:
BASE_ARCH: 'amd64'
.debalike: &debalike
variables:
FLAVOUR: 'debalike'
release_debalike_amd64:
<<: *release
<<: [*amd64, *debalike]
现在,yaml解析器将忽略*debalike
,而仅包含*amd64
中的值。
有什么方法可以做到这一点? 如果需要的话,这是.gitlab-ci.yml。
答案 0 :(得分:1)
不幸的是没有。只能使用YAML锚点和别名来进行深度合并。
GitLab EE在10.5中引入了CI包含,在10.8中对其进行了增强,以进行CI作业的深度合并。在这种特殊情况下,我认为这不会帮助您,但是您可以根据组织CI文件的方式以其他方式利用它。
有关包含参数的更多信息,请参见include。