【问题标题】:Iterate through environments in GitLab CI pipeline遍历 GitLab CI 管道中的环境
【发布时间】:2021-10-20 04:32:34
【问题描述】:

我有一个 .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 的东西。这个想法是避免在只有环境或运行器标签更改时一遍又一遍地复制粘贴相同的作业。我在文档中看不到任何内容,有关此主题的所有功能请求似乎都已关闭。是否有任何解决方法可以实现相同的行为并被社区接受为最佳实践?

我从这里的其他问题中知道,一种建议的解决方案可能是:

test:all:
  stage: test
  script:
    - Iterate here with v1.0, v2.0, v2.5, etc

这种方法的问题是只创建了一个作业,而且你失去了从 GitLab 环境功能中选择跑步者和其他功能的能力,所以我宁愿避免这个。

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    可以在最近实施的tags 中使用变量并使用parallel matrix,您可以执行以下操作:

    test:
      stage: test
      script:
        - ./run.sh $VERSION
      environment:
        name: $VERSION
      tags:
        - $VERSION
      parallel:
        matrix:
          - VERSION: [v1.0, v2.0, v3.0]
    

    这将为三个定义的版本创建一个作业,每个作业将并行运行。

    【讨论】:

    • 很有魅力,非常感谢您的回答:)
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2022-01-19
    • 2022-06-11
    • 1970-01-01
    • 2021-03-20
    相关资源
    最近更新 更多