Zenn Dev Snowcait Articles 0c3ef159a371e6
ランナー OS の matrix を自動生成するアクションを作りました [GitHub Actions]
- URL: https://zenn.dev/snowcait/articles/0c3ef159a371e6
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: GitHub Actions のワークフローでランナー OS のリストをハードコードしていると、GitHub が新しいランナーを追加・変更するたびに手動メンテナンスが必要になる。snow-actions/list-github-hosted-runners アクションを使うと、JSON Schema Store で提供されているワークフロー用 JSON Schema からランナーリストを動的に取得でき、matrix に自動で反映できる。これにより、ランナー OS が更新されても workflow を変更せず最新の OS でテストが実行されるようになる。カスタムアクションやツールを複数 OS でテストするユースケースに特に有効。
詳細
従来の静的 matrix の問題点:
- ubuntu-22.04, ubuntu-20.04, windows-2022 などをべた書きしていると、GitHub 側でランナーが更新・追加されるたびに手動修正が必要
動的 matrix の実装例: jobs: runners: runs-on: ubuntu-latest outputs: list: ${{ steps.list.outputs.all }} steps: - id: list uses: snow-actions/list-github-hosted-runners@v1.0.0 test: needs: [ runners ] strategy: matrix: runner: ${{ fromJSON(needs.runners.outputs.list) }} runs-on: ${{ matrix.runner }}
仕組み: VS Code のワークフロー補完に使われている JSON Schema Store の JSON Schema にランナーリストが含まれており、そこを参照して動的生成している。
適しているユースケース: カスタムアクション、CLI ツール、クロスプラットフォーム対応ツールの各 OS でのテスト自動化。