合并YAML密钥
我试图创建一个非常抽象的合并YAML密钥,yaml,gitlab-ci,Yaml,Gitlab Ci,我试图创建一个非常抽象的.yaml-配置,可以在不同的地方重用 现在看起来是这样的: .release: &release stage: release script: - docker tag $IMAGE_TESTING $IMAGE_RELEASE - docker push $IMAGE_RELEASE only: - master when: manual .amd64: &amd64 BASE_ARCH: 'amd6
.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\u debalike\u amd64
中使用variables标签,并直接使用include锚定
类似于此(不起作用):
.release:&release
阶段:发布
脚本:
-docker标签$IMAGE\u测试$IMAGE\u发布
-docker推送$IMAGE\u发布
仅:
-主人
时间:手动
.amd64:&amd64
变量:
底拱:“amd64”
.debalike:&debalike
变量:
味道:'堕落'
发布amd64:
不幸的是没有。仅使用YAML锚和别名进行深度合并是不可能的
GitLab EE在10.5中引入了CI Include,在10.8中对其进行了增强,以实现CI作业的深度合并。我不认为它在这种特殊情况下会对您有所帮助,但您可以通过其他方式利用它,具体取决于您如何组织CI文件
有关include参数的更多信息,请参阅。不幸的是,没有。仅使用YAML锚和别名进行深度合并是不可能的
GitLab EE在10.5中引入了CI Include,在10.8中对其进行了增强,以实现CI作业的深度合并。我不认为它在这种特殊情况下会对您有所帮助,但您可以通过其他方式利用它,具体取决于您如何组织CI文件
有关include参数的更多信息,请参阅。谢谢您的建议!作为一个CE用户,包含不是一个选项。看来我不得不接受当前版本。谢谢你的建议!作为一个CE用户,包含不是一个选项。看来我必须接受当前版本。
.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: &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]