Kōhei Yamamoto

『GitHub CI/CD実践ガイド』を読んだ

『GitHub CI/CD実践ガイド』を2025年7月ごろに読んでいた。

GitHub CI/CD実践ガイド――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用 (エンジニア選書) | 野村 友規 |本 | 通販 | Amazon

内容

タイトルには「GitHub」と「CI/CD」、またサブタイトルには「GitHub Actions」とあるとおり、CI/CDをGitHubの提供する機能群で実現するためのテクニックが解説されている。具体的には、GitHub Actions(以降GHAとする)を中心に据えつつ、ワークフローやアクション、継続的インテグレーション (CI) での利用、DependabotやReleases/PackagesといったGitHubの機能、クラウドプロバイダと連携した継続的デリバリー (CD) での実際の利用方法や、さらにシフトレフトを意識したセキュリティまで解説している。

とくに、GHAを使う上で重要なワークフローとアクションについては、その構文だけではなく、プラクティスや良い設計についても詳しく解説している。

CD実現のステップも丁寧に解説されている。PackageでのDockerイメージホストから、OpenID Connectを用いたクラウドプロバイダの短命な認証情報の取得、AWS ECSへのデプロイまでを一通り学べるようになっている。

感想

「Effective GitHub Actions」ともいえる内容の本だった。GitHubでテストやデプロイのためのワークフローを作ったりメンテナンスする人にとっては、1回読んでおくだけでもワークフローの改善に役立つ情報がたくさん手に入れられると思う。

GitHub Actionsを使っていると、基本的には公式ドキュメント中心に必要なところだけ読む、という形の情報収集スタイルになりやすい。その点で、この本はワークフローのよい書き方や避けたいパターンのようなプラクティスが体系的に説明されているので、効率的によい使い方を身につけることができる。基本的なところだと、コンテキストから取得した値は、事前に必ず中間環境変数を挟んでダブルクオートで囲むことでスクリプトインジェクションを防ぐ、といったテクニックなどだ1

env:
PR_TITLE: ${{ github.event.pull_request.title }}
steps:
- run: echo "${PR_TITLE}"

個人的には、クラウドプロバイダの短命な認証トークンを払い出すのにOIDCを使うときのスキームにどうなっているか、今ひとつちゃんと把握していなかった。これについても、この本を読んで理解できた。具体的には、OpenIDプロバイダがGitHubで、Relying Party (RP)がAWS STSのようなクラウドプロバイダのサービスになっている。そして、エンドユーザーとしてのワークフローが、GitHubからsubにGHAワークフローのコンテキストが詰め込まれたIDトークンをもらい、それをRPたるクラウドプロバイダに検証してもらうことで、短命な認証トークンをもらうという形。この流れの説明に加えて、実際にECSにデプロイするためのワークフローの実装まで解説されているので、GHAでのクラウドへのデプロイについて実践的な理解を得られた。

全体を通して、おそらく意識的に簡潔な文体で説明がなされていて読みやすく、分量も特別多いわけではないので、GitHub Actionsを使っている/これから使うのいずれでもサクッと読んでおくとよいと思った。

脚注

  1. この文章を書いている2025年9月でも、ワークフローへのインジェクションによって攻撃された事件があった https://nx.dev/blog/s1ngularity-postmortem, https://blog.jxck.io/entries/2025-09-03/nx-incidents.html