如何解决刻画平行矩阵
这似乎是对GitLab 13.3(https://docs.gitlab.com/ee/ci/yaml/#parallel-matrix-jobs)中新的并行矩阵功能的误用
我有一组服务的并行作业集合:build
(泊坞窗映像),test
,release
,delete
...和代码-base已创建,因此每个并行服务都位于单独的子目录中。
这样,我可以有一个通用模板:
variables:
IMAGE_NAME: $CI_REGISTRY_IMAGE/$LOCATION
.build-template:
script:
- docker build --tag $IMAGE_NAME:$CI_PIPELINE_ID-$CI_COMMIT_REF_SLUG --tag $IMAGE_NAME:latest $LOCATION
stage: build
when: manual
然后进行多个构建作业:
build-alpha:
extends: .build-template
variables:
LOCATION: alpha
build-beta:
extends: .build-template
variables:
LOCATION: beta
....并根据需要重复。
然后,我可以对test
,release
和delete
作业执行相同的操作:这是一个通用模板,仅使用一个变量来区分服务。
营救的矩阵?
在我看来
variables:
IMAGE_NAME: $CI_REGISTRY_IMAGE/$NOTEBOOK
build-services:
parallel:
matrix:
- LOCATION: alpha
- LOCATION: beta
script:
- docker build --tag $IMAGE_NAME:$CI_PIPELINE_ID-$CI_COMMIT_REF_SLUG --tag $IMAGE_NAME:latest $LOCATION
stage: build
when: manual
将是这种matrix
形式的理想候选人....但是显然matrix
需要两个变量。
有人能解决这个多重并行作业问题吗?
解决方法
将是该矩阵形式的理想候选者。...但是显然,矩阵需要两个变量。
不再。
请参见GitLab 13.5(2020年10月)
,允许一维平行矩阵
以前,
parallel: matrix
关键字(并行运行作业矩阵)仅接受二维矩阵数组。如果要为某些作业指定自己的值数组,这是有限制的。在此版本中,您现在具有更大的灵活性,可以以最适合您的开发工作流程的方式运行作业。
您可以在一维数组中运行作业的并行矩阵,从而使管道配置更加简单。感谢Turo Soisenniemi所做的杰出贡献!这是实践中的一个基本示例,它将针对不同版本的Node.js运行3个测试作业,但是您可以将这种方法应用于特定的用例,并轻松地在管道中添加或删除作业:>
请参见Documentation和Issue。
您尝试过吗:
const All = {
id : [ "a","b","c","d","e"],count : [1,2,2],}
,
这是Gitlab已知的issue。
有一种解决方法,将“虚拟”值用作第二个值(我正在使用Gitlab 13.3.1)。
以您的示例为例:
parallel:
matrix:
- LOCATION: ['alpha','beta']
DUMMY: 'dummy'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。