GitHub Actions 矩阵而不使用单独的作业?

问题描述 投票:0回答:2

我喜欢 GitHub Actions 的矩阵功能,它允许我构建输出的多种组合。

但是,我也想将它用作一种 for 循环,但在同一个构建代理上(这样它就不会并行运行,并且可以访问以前的输出)。

这有可能吗?

github github-actions
2个回答
4
投票

矩阵文档不得不说的一切来看,似乎一旦定义了矩阵策略,您就会获得等于矩阵中元素数量的作业数量(即使您不使用该值完全)。

这个小工作流程演示了这一点:

name: Test
on:
  push: { branches: master }

jobs:
  test:
    name: Matrix test
    runs-on: ubuntu-latest
    strategy:
      matrix: { ruby: ['2.4', '2.5'] }

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    # - name: Do something with the matrix value
    #   run: echo Doing it with ${{ matrix.ruby }}

输出:

如果您想运行连续(而不是并行)操作,特别是如果一个步骤依赖于上一步的输出,那么听起来您最好的选择是将构建逻辑隐藏在 shell 脚本中,并有一份工作运行它。

由于问题中未描述您的用例,我想提出另一种方法,我在许多生产工作流程中使用该方法,并且可能适合您的需求。

我还需要在一些工作流程中具有某种“循环”(例如,基于相同的构建映像部署多个 docker 容器)。为此,我使用模板引擎创建一个包含循环的 YAML 文件,然后生成最终的 YAML,它是标准且有效的,并且一遍又一遍地包含相同的步骤。

我用来执行此操作的工具是开源的(完全公开,我也构建了它),称为 Kojo,并且是专门为此配置模板而设计的 - 但您可以使用您的任何模板引擎来完成此操作选择。


© www.soinside.com 2019 - 2024. All rights reserved.