エンジニア選書シリーズGitHub CI/CD実践ガイド
――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用
――持続可能なソフトウェア開発を支える
2024年5月29日紙版発売
2024年5月29日電子版発売
野村友規 著
B5変形判/400ページ
定価3,740円(本体3,400円+税10%)
ISBN 978-4-297-14173-8
書籍の概要
この本の概要
本書はCI/CDの設計や運用について,GitHubを使ってハンズオン形式で学ぶ書籍です。GitHub Actionsの基本構文からスタートし,テスト・静的解析・リリース・コンテナデプロイなどを実際に自動化していきます。あわせてDependabot・OpenID Connect・継続的なセキュリティ改善・GitHub Appsのような,実運用に欠かせないプラクティスも多数習得します。
実装しながら設計や運用の考え方を学ぶことで,品質の高いソフトウェアをすばやく届けるスキルが身につきます。GitHubを利用しているなら,ぜひ手元に置いておきたい一冊です。
こんな方におすすめ
- GitHubは使っているけれど,プルリクエストぐらいしか利用していない
- CI/CDというキーワードは知っているけれど,自分で設計したことはない
- GitHub Actionsには触れているけれど,正直雰囲気で運用している
本書のサンプル
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
[基礎編]
第1章 ソフトウェア開発とGitHub
- 1.1 ソフトウェア開発
- 1.2 CI/CD
- 1.3 GitHub
- 1.4 環境構築
- 1.5 まとめ
第2章 GitHub Actionsの基礎概念
- 2.1 GitHub Actionsをはじめよう
- 2.2 GitHub Actionsの構成要素
- 2.3 GitHub Actionsの実行
- 2.4 GitHub Actionsのエラー
- 2.5 ワークフローの起動方法
- 2.6 ワークフローの実行管理
- 2.7 ジョブの実行環境
- 2.8 アクション
- 2.9 GitHub Actionsの課金モデル
- 2.10 まとめ
第3章 ワークフロー構文の基礎
- 3.1 コンテキスト
- 3.2 環境変数
- 3.3 Variables
- 3.4 Secrets
- 3.5 式
- 3.6 関数
- 3.7 条件分岐
- 3.8 ネーミング
- 3.9 ステップ間のデータ共有
- 3.10 GitHub APIの実行
- 3.11 スターターワークフロー
- 3.12 まとめ
第4章 継続的インテグレーションの実践
- 4.1 プルリクエストによる継続的インテグレーションの起動
- 4.2 自動テスト
- 4.3 イベントのフィルタリング
- 4.4 セットアップアクション
- 4.5 静的解析
- 4.6 タイムアウト
- 4.7 シェル
- 4.8 Concurrency
- 4.9 継続的インテグレーションの黄金律
- 4.10 自動テストの運用プラクティス
- 4.11 静的解析の運用プラクティス
- 4.12 まとめ
第5章 運用しやすいワークフローの設計
- 5.1 ワークフロー設計の道具箱
- 5.2 ロギング
- 5.3 レポーティング
- 5.4 チャット通知
- 5.5 複数ジョブの実行制御
- 5.6 マトリックス
- 5.7 Environments
- 5.8 キャッシュ
- 5.9 アーティファクト
- 5.10 まとめ
第6章 アクションによるモジュール化
- 6.1 アクションの分類
- 6.2 Composite Action
- 6.3 メタデータ構文
- 6.4 メタデータ構文とワークフロー構文の違い
- 6.5 アクションの設計プラクティス
- 6.6 まとめ
[実践編]
第7章 クリーンなリポジトリの維持
- 7.1 コードレビュー
- 7.2 ブランチの保護
- 7.3 オーナーシップの維持
- 7.4 クレデンシャルの混入防止
- 7.5 ドキュメンテーション
- 7.6 まとめ
第8章 Dependabotによる依存関係バージョンアップ
- 8.1 依存関係
- 8.2 Dependabot
- 8.3 GitHub Actionsによる自動マージ
- 8.4 Dependabotのワークフロー設計
- 8.5 バージョンアップの影響範囲
- 8.6 自動マージ戦略
- 8.7 まとめ
第9章 GitHub Releasesによるリリース自動化
- 9.1 ソフトウェアのリリース
- 9.2 バージョニング
- 9.3 アナウンス
- 9.4 GitHub Releases
- 9.5 リリースノートの自動生成
- 9.6 リリースの自動化
- 9.7 Gitタグの保護
- 9.8 まとめ
第10章 GitHub Packagesによるパッケージ管理
- 10.1 パッケージ
- 10.2 GitHub Packages
- 10.3 Container Registry
- 10.4 GitHub Packagesの管理
- 10.5 パッケージの自動リンクとパーミッションの継承
- 10.6 コンテナイメージの自動リリース
- 10.7 まとめ
第11章 OpenID Connectによるセキュアなクラウド連携
- 11.1 クラウドプロバイダのクレデンシャル
- 11.2 OpenID Connect
- 11.3 検証作業のリスクヘッジ
- 11.4 AWSにおけるOpenID Connectの利用準備
- 11.5 OpenID ConnectによるAWS連携
- 11.6 Cloud Rolesのセキュアな運用
- 11.7 まとめ
第12章 コンテナオーケストレーションのデプロイメント
- 12.1 サービス
- 12.2 実行環境の構築
- 12.3 デプロイ情報のVariables管理
- 12.4 デプロイの自動化
- 12.5 Environmentsを利用した複数環境デプロイ
- 12.6 デプロイメント設計
- 12.7 まとめ
第13章 アクションのオープンソース化
- 13.1 アクションの公開
- 13.2 アクションのテスト
- 13.3 アクションのリリースマネジメント
- 13.4 アクションのドキュメンテーション
- 13.5 GitHub Marketplaceへの公開
- 13.6 アクションの進化プロセス
- 13.7 まとめ
[応用編]
第14章 GitHub Actionsの高度な使い方
- 14.1 Reusable Workflows
- 14.2 動的なワークフロー定義
- 14.3 エラーハンドリング
- 14.4 コンテキストによるフロー制御
- 14.5 プライベートアクションとプライベートReusable Workflows
- 14.6 まとめ
第15章 GitHub Actionsのセキュリティ
- 15.1 ソフトウェアサプライチェーン
- 15.2 セキュリティの設計原則
- 15.3 GitHubのサービス特性
- 15.4 リポジトリの保護
- 15.5 サードパーティアクションのセキュリティ
- 15.6 スクリプトインジェクション
- 15.7 最小権限のパーミッション
- 15.8 シークレットマネジメント
- 15.9 Forkプルリクエスト対策
- 15.10 OpenID Connectハードニング
- 15.11 まとめ
第16章 セキュリティのシフトレフト
- 16.1 シフトレフト
- 16.2 依存関係の脆弱性スキャン
- 16.3 シークレットスキャン
- 16.4 アプリケーションセキュリティ
- 16.5 Infrastructure as Codeセキュリティ
- 16.6 継続的なセキュリティ改善
- 16.7 まとめ
第17章 GitHub Appsトークンによるクロスリポジトリアクセス
- 17.1 GitHubのクレデンシャル
- 17.2 GitHub Appsトークン
- 17.3 クロスリポジトリアクセス
- 17.4 GitHub Appsトークン生成の仕組み
- 17.5 GitHub Appsトークンの運用プラクティス
- 17.6 まとめ
第18章 継続的デリバリーの実践
- 18.1 組織パフォーマンス
- 18.2 バージョン管理戦略
- 18.3 テスト戦略
- 18.4 リリース戦略
- 18.5 データベースの変更管理
- 18.6 Infrastructure as Codeの変更管理
- 18.7 疎結合なアーキテクチャ
- 18.8 運用を忘れない
- 18.9 継続的な学び
- 18.10 まとめ
この本に関連する書籍
-
CircleCI実践入門 ──CI/CDがもたらす開発速度と品質の両立
CI/CD(継続的インテグレーション,継続的デプロイ)を導入すると,ビルド/テスト/デプロイなどアプリケーションのリリースに至るまでの多くの作業を自動化できます。...
-
[改訂第3版]Jenkins実践入門 ―ビルド・テスト・デプロイを自動化する技術
継続的インテグレーションに欠かせないツールであるJenkins。その導入から運用管理までを解説した定番書として大好評の『Jenkins実践入門』が,ついに2系に対応しました...
-
GitHub実践入門──Pull Requestによる開発の変革
GitHubの実践的な使い方を,実際に手を動かす形で解説する書籍です。初学者の方にもわかりやすいよう,基本的なGitやGitHubの使い方から,「ソーシャルコーディング」の...