📜
ランナー OS の matrix を自動生成するアクションを作りました [GitHub Actions]
作ったもの
何ができる?
今までべた書きしていたものを…
test.yml
jobs:
test:
strategy:
fail-fast: false
matrix:
runner: [ ubuntu-22.04, ubuntu-20.04, ubuntu-18.04, windows-2022, windows-2019, macos-11, macos-10.15 ]
runs-on: ${{ matrix.runner }}
動的に生成できるようになりました。
test.yml
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:
fail-fast: false
matrix:
runner: ${{ fromJSON(needs.runners.outputs.list) }}
runs-on: ${{ matrix.runner }}
何が嬉しいか
最新のランナー OS が自動的に適用されるので、ランナー OS が更新される度にワークフローをメンテナンスする必要がなくなります。
ユースケース
カスタムアクションやツールの各 OS でのテストなど。
どうやって実現しているか
過去に作成したカスタムアクションや Composite アクションのテンプレートのテストをメンテナンスするのをずっと不便に思っていて自動生成する方法はないものかと考えていました。
ドキュメントをスクレイピングしたり actions/runner-images のファイルを ls
してみようかと検討していたのですが、ワークフローのバリデーションに使われている JSON Schema にリストがあることに気付きました。
VS Code で使われている JSON Schema は JSON Schema Store で提供されているようなのでそこを参照しています。
実質的なコードはこれだけです。
さいごに
カスタムアクションやツールを自作している方はテストの保守が多少楽になるのではないかと思います。
ぜひ使ってみてください。
Discussion