在 GitLab CI 管道中遍历环境
Iterate through environments in GitLab CI pipeline
我有一个 .gitlab-ci.yml 管道,其中有一个简单的作业需要在多个环境中 运行。类似于以下内容:
test:v1.0:
stage: test
environment:
name: v1.0
tags:
- v1.0
script:
- ./run.sh $VERSION
test:v2.0:
stage: test
environment:
name: v2.0
tags:
- v2.0
script:
- ./run.sh $VERSION
test:v2.5:
stage: test
environment:
name: v2.5
tags:
- v2.5
script:
- ./run.sh $VERSION
GitLab 是否有任何一种通过迭代数组来创建作业的机制?类似于 Ansible's loops。这个想法是为了避免在只有环境或 运行ner 标签发生变化时一遍又一遍地复制粘贴相同的作业。我在文档中看不到任何内容,而且关于该主题的所有功能请求似乎都已关闭。是否有任何解决方法来实现相同的行为并被社区接受为最佳实践?
我从这里的其他问题中了解到,一个提议的解决方案可能是:
test:all:
stage: test
script:
- Iterate here with v1.0, v2.0, v2.5, etc
这种方法的问题是只创建了一个作业,你也失去了从 GitLab 环境功能中选择 运行ners 和其他功能的能力,所以我宁愿避免这个。
可以使用最近才实现的 tags
中的变量和 parallel matrix 的使用,您可以执行以下操作:
test:
stage: test
script:
- ./run.sh $VERSION
environment:
name: $VERSION
tags:
- $VERSION
parallel:
matrix:
- VERSION: [v1.0, v2.0, v3.0]
这将为三个定义的版本创建一个作业,每个作业将 运行 并行。
我有一个 .gitlab-ci.yml 管道,其中有一个简单的作业需要在多个环境中 运行。类似于以下内容:
test:v1.0:
stage: test
environment:
name: v1.0
tags:
- v1.0
script:
- ./run.sh $VERSION
test:v2.0:
stage: test
environment:
name: v2.0
tags:
- v2.0
script:
- ./run.sh $VERSION
test:v2.5:
stage: test
environment:
name: v2.5
tags:
- v2.5
script:
- ./run.sh $VERSION
GitLab 是否有任何一种通过迭代数组来创建作业的机制?类似于 Ansible's loops。这个想法是为了避免在只有环境或 运行ner 标签发生变化时一遍又一遍地复制粘贴相同的作业。我在文档中看不到任何内容,而且关于该主题的所有功能请求似乎都已关闭。是否有任何解决方法来实现相同的行为并被社区接受为最佳实践?
我从这里的其他问题中了解到,一个提议的解决方案可能是:
test:all:
stage: test
script:
- Iterate here with v1.0, v2.0, v2.5, etc
这种方法的问题是只创建了一个作业,你也失去了从 GitLab 环境功能中选择 运行ners 和其他功能的能力,所以我宁愿避免这个。
可以使用最近才实现的 tags
中的变量和 parallel matrix 的使用,您可以执行以下操作:
test:
stage: test
script:
- ./run.sh $VERSION
environment:
name: $VERSION
tags:
- $VERSION
parallel:
matrix:
- VERSION: [v1.0, v2.0, v3.0]
这将为三个定义的版本创建一个作业,每个作业将 运行 并行。