目次
[基礎編]
第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 まとめ