概要
GitHub Actions で 2025年時点の状態を整理しました。
- Actions
- 利用しているツール
- 定期更新通知方法
について記載しています。
Actions
Actions の利用方針
私が関わっているものでは
- 原則企業/Organizationsなどで継続的にメンテがされている Actions を利用する
- 原則 SHA Hash で対象を指定する ( GitHub 版 Dependabot + suzuki-shunsuke/pinact で対応)
- プロジェクト内部の Actions / reusing workflow はメジャーバージョンタグ利用可
- ※Actions / reusing workflow の対応者側でレビューしている前提なので
にしています。
Enterprise 版だとおそらく企業・組織設定で利用可能な Actions に制限は書けられると思いますが、GitHub 管理者の運用コスト的に対応難しそうだな、と思います
全体的な対応
2025年で Actions で全体的に対応したものは以下です。
- Node.js 20 Runtime が来年EOLになるのでその対応
- サプライチェーンアタックの緩和策
- アタックの内容
- 緩和策
- 試験採用しているのは SHA Pinning (設定で Enforce はしていない状態)で今のところ
pinactを使う予定です - 設定の Enforce Immutable Release や Enforce SHA Pinning、permission の最小権限化のためのWorkflow分離などはこれからの適応課題です
- 試験採用しているのは SHA Pinning (設定で Enforce はしていない状態)で今のところ
GitHub 社提供 Actions
基本的なところは使っています。
- 全般用
-
actions/checkout
- レポジトリをチェックアウトする Actions
- 今年は
persist-credentialsをfalseにしていきました
-
actions/setup-*- 言語 Runtime を GitHub Actions の Runner にインストールする Actions
-
actions/cache
- Workflow の成果物をキャッシュする Actions
- 年初にキャッシュのバックエンドのバージョンアップに伴うバージョンアップがありました
-
actions/github-script
- PR で動かす Workflow が Issue に書き込むさいなどに利用しています
-
actions/checkout
- GitHub Pages 用
- actions/configure-pages
- actions/upload-pages-artifact
-
actions/deply-pages
- GitHub Pages の CD 用に利用しています
パブリッククラウド/SaaS系
結構使っているものはあるのですが、多くのプロジェクトで使っている代表的なものだけ記載します。
-
AWS
-
aws-actions/configure-aws-credentials
- GitHub Actions - AWS 間の OIDC 連携用に使ってます
-
aws-actions/amazon-ecr-login
- ECR 周りはこれで対応しています
- 昨今の Dockerhub イメージの pull 数制限の関係で AWS で ECR Public から Pull するものが増えて利用が増えている印象です ※Docker Hub 有償アカウントを利用してるものもあります
- aws-actions/amazon-ecs-render-task-definition
-
aws-actions/amazon-ecs-deploy-task-definition
- 2つ合わせて Code Deploy を利用した ECS のデプロイに利用しています
-
aws-actions/configure-aws-credentials
-
Google Cloud ※1
-
google-github-actions/auth
- GitHub Actions - Google Cloud 間の OIDC 連携用に使ってます
-
README.md にもありますが、
gsutilはこの Actions のクレデンシャルを利用しないのでgcloud storageコマンドを使う必要があります
-
google-github-actions/setup-gcloud
-
gcloudとgsutilコマンドのインストールに使っています
-
-
google-github-actions/deploy-cloudrun
- Cloud Run へのデプロイ
- Cloud Build でパイプライン作ってる例の方が多いかも
-
google-github-actions/auth
-
Docker
-
docker/login-action
- 名前空間的には Docker Hub のみの用途にも見えますが、他のクラウドサービスのコンテナレジストリにも対応しています(例: AWS ECR)
-
docker/build-push-action
- 元々
dockerのビルド系のコマンドやシェルを使っているところも多くあったのですが、特別な対応がないところはこれで揃えました
- 元々
-
docker/login-action
※1:サポート上、Google Cloud のものと言い切っていいかは微妙なところがありますが
ツール
割と昔に作成したワークフローを reusing workflow として使っているケースが多いので、この辺りはこれから整備しようとしているところです。
- ローカルでのテスト
-
nektos/act
- act の制限などがまだ充分に把握できてなくて活かせてないと思っています
- 例)
actions/cacheが対応できないなど、比較的明示的な内容は分かるのですが
-
nektos/act
- Workflow ファイルの Linter
-
rhysd/actionlint
- 他にも suzuki-shunsuke/ghalint や zizmorcore/zizmor があるので検討中です
-
rhysd/actionlint
- SHA Hash Pinning
-
suzuki-shunsuke/pinact
- 対応頑張っていこうと思います
-
suzuki-shunsuke/pinact
GitHub Actions のアップデート周り
GitHub 版 Dependabot を使っています。
チームの確認の場に近いタイミングで更新されるように Workflow を設定しています。
おわりに
GitHub Actions で 2025年時点の状態を整理しました。
上記までの内容とは別の話になりますが、今年一番の思い出としては、生成AIの利用です。
GitHub Actions の Workflow ファイルは生成AI系で生成すると学習データのカットオフ問題なのか、補助がない状態では古いバージョンになっていたり、特定の記述があったりで割合区別ができました。
Pull Request の段階で修正されていましたが、生成AIを使っているかどうかや、チームの方針などが見えて興味深かったです。