コンテンツにスキップ
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 でのテスト自動化。