はじめに
以下のようなコードを書いた際に、果たして順序は常に同じになるでしょうか。
name: test on: workflow_dispatch: jobs: test-matrix: runs-on: ubuntu-latest # 実行される順番は常に 1 -> 2 -> 3 かどうか strategy: matrix: value: [1, 2, 3] max-parallel: 1 steps: - name: Dump run: | echo "Value: ${{ matrix.value }}"

結論一意に定まるのですが、備忘録もかねて参照先を残しておきます。
概要
まずはマトリックスの変数の順序によりジョブが作成される順序が決まるという旨が公式ドキュメントに記述されています。
# ジョブの作成順序は 1 -> 2 -> 3 strategy: matrix: value: [1, 2, 3]
GitHub の既定では、ランナーの可用性に応じて並列実行されるジョブの数が最大化されます。 マトリックス内の変数の順序によって、ジョブが作成される順序が決まります。 定義する最初の変数は、ワークフローの実行で最初に作成されるジョブになります。
ワークフローでのジョブのバリエーションの実行 - GitHub Docs
max-parallel
を1
に設定することで、同時に実行できるジョブの最大数を1つにすることができます。ジョブの作成順序が一意に定まることを考慮すると、必ずジョブの順番が一意で直列に実行できることが分かります。
実験
冒頭のサンプルを実行してみたところ、確かに1 -> 2 -> 3
で実行されていました。
name: test on: workflow_dispatch: jobs: test-matrix: runs-on: ubuntu-latest # 実行される順番は常に 1 -> 2 -> 3 かどうか strategy: matrix: value: [1, 2, 3] max-parallel: 1 steps: - name: Dump run: | echo "Value: ${{ matrix.value }}"