【问题标题】:GitLab For Loop to Run Stages for Each of a ThingGitLab For Loop 为每个事物运行阶段
【发布时间】:2021-10-25 23:59:07
【问题描述】:

使用 Jenkins 声明式管道,您可以遍历地图以运行每个元素的阶段:

https://newbedev.com/for-loop-in-jenkins-pipeline-code-example

有没有办法用 GitLab CI 做到这一点?

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    可以用矩阵,也是一样的逻辑。

    Here the doc about it.

    【讨论】:

    【解决方案2】:

    我知道这已经得到了回答,但我仍然会添加一些细节等。一般来说,只有链接不是好的答案,因为它们可能指向未来的任何地方。

    正如@Joao Vitorino 所说,有一个名为matrix builds 的功能,可以通过以下方式轻松实现

    jobs:
      parallel:
        matrix:
          - ENVIRONMENT: 
            - 'test'
            - 'foo'
      script: echo $ENVIRONMENT
    

    这将生成两个作业,一个用于test,一个用于foo,并分别打印出选项。有关详细信息,请参阅:https://docs.gitlab.com/ee/ci/yaml/#parallel-matrix-jobs 您还可以执行多个变量和连接,例如:

      # copied from the official gitlab docs
      parallel:
        matrix:
          - PROVIDER: aws
            STACK:
              - monitoring
              - app1
              - app2
          - PROVIDER: ovh
            STACK: [monitoring, backup, app]
          - PROVIDER: [gcp, vultr]
            STACK: [data, processing]
    

    这很可能会解决您的所有问题。除此之外,parallel:matrix 也适用于trigger。这意味着您可以创建一个完整的管道,该管道将使用您的属性作为child pipeline 触发,例如:

    jobs:
      parallel:
        matrix:
          - ENVIRONMENT: 
            - 'test'
            - 'foo'
      trigger:
        include:
          - local: path/to/child-pipeline.yml
        strategy: depend
    

    这将生成两个子管道,您可以在其中添加更多的步骤和逻辑,比普通的matrix:parallel-builds 更简单

    【讨论】:

      猜你喜欢
      • 2021-07-14
      • 2021-04-30
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2016-11-13
      • 2021-09-08
      • 1970-01-01
      相关资源
      最近更新 更多