実際使うかと言うとどうなんだろうという気もするが、できるの知らなかったので残しておく
いきなりサンプルコードだがこれだけで理解はできると思う
- .github/workflows/dynamic-matrix.yml
name: dynamic matrix on: [push] jobs: set-matrix: runs-on: ubuntu-latest outputs: something: ${{ steps.set-matrix.outputs.value }} steps: - name: make values id: set-matrix run: | echo '["hoge","fuga"]' | jq -c list=$(echo '["hoge","fuga"]' | jq -c) echo "value=${list}" >> $GITHUB_OUTPUT execute: needs: set-matrix runs-on: ubuntu-latest strategy: fail-fast: false matrix: hoge: ${{fromJson(needs.set-matrix.outputs.something)}} steps: - run: echo ${{ matrix.hoge }}
set-matrix
のjobでhoge
,fuga
を配列としてJSON形式でoutputに格納している
後続のexecute
ではstrategy.matrix.hoge
でfromJson
を使って値を取得している
実行結果はこんな感じ
今回の例ではArray<string>
だがset-matrix
でArray<Object>
となるような値を生成しても同様に参照させればOK
サンプルでは固定値だがシェルスクリプトでよしなに指定することも可能なのでさまざまな場面に対応できる
参考 How to make a Dynamic Matrix in GitHub Actions | Tomas Votruba