エンジニア選書シリーズGitHub CI/CD実践ガイド
――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用

[表紙]GitHub CI/CD実践ガイド ――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用

紙版発売
電子版発売

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

サンプル画像2

サンプル画像3

目次

[基礎編]

第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 まとめ

著者プロフィール

野村友規(のむらともき)

ソフトウェアエンジニア。事業会社で10年ほどWeb系システムの開発・運用に従事。2021年に独立し,技術顧問やソフトウェアアーキテクトとして複数社をサポート。システムアーキテクチャ設計・IaC導入・CI/CD運用・エンジニアリングマネージャー支援・技術戦略策定などを生業にしている。書籍執筆や雑誌寄稿もしており,代表著書に「実践Terraform」がある。技術書オタクで紙の本が大好き。積読は気にしたら負けの精神で生きている。