👁

Step8: CI/CDパイプライン

このStepでは、CI/CD パイプラインの概念と GitHub Actions を学び、制作物に対してコード品質チェック・コンテナビルド・デプロイまでを自動化するパイプラインを構築します。

1. 講座の履修

CI/CDパイプライン講座 の以下の章を実施してください。すでに同等の知識がある場合は、講座の履修はスキップしても構いません。

2. 課題の実施

2.1 目的・背景

Step 4 で組み込んだ静的解析・自動テスト、Step 5・6 で作ったコンテナ、Step 7 でコード化した Terraform を、GitHub Actions で一気通貫に自動化します。アプリケーションのコード変更もインフラの設定変更も、ブランチへの push を起点に安全に本番へ反映される流れを整えることが目標です。

2.2 実施要件

アプリケーションの CI/CD

sns-camp-api に対して、以下の一連の処理を GitHub Actions で自動化してください。

  • 静的解析(Step 4 で組み込んだツールを実行)
  • 自動テスト(Step 4 で組み込んだテストを実行)
  • コンテナイメージのビルドとレジストリへのプッシュ
  • コンテナ実行環境へのデプロイ

インフラの CI/CD

Step 7 でコード化した Terraform に対して、以下を GitHub Actions で自動化してください。

  • Pull Request 作成時に terraform plan を実行し、変更内容を確認できる
  • 特定のブランチへのマージ時に terraform apply を実行し、変更が反映される

2.3 デプロイ方式(任意)

アプリケーションのデプロイ方式として、Blue/Green デプロイメントなど無停止で切り替えができる方式を採用します。リリース中のダウンタイムをなくし、問題があった場合に旧環境へすぐ切り戻せるようにすることが目的です。

2.4 ブランチ保護(任意)

本番反映されるブランチに対して、レビュー通過・CI パス・直接プッシュ禁止などの保護設定を行います。レビューや自動チェックを通過していない変更が本番に紛れ込まないようにし、事故を未然に防ぐことが目的です。

2.5 判定基準

動作確認

以下のシナリオが自動で成功することを確認してください。

  • sns-camp-api のコードに変更を push すると、GitHub Actions で静的解析・自動テスト・ビルド・デプロイが順に実行され、公開 URL に反映される
  • Terraform コードに変更を push すると、GitHub Actions で plan が実行され、マージ時に apply が実行される

加えて、デプロイ後の公開 URL への疎通確認を行ってください。

curl -i https://<公開URL>/health

以下のようなレスポンスが返ります。

HTTP/1.1 200 OK
Content-Type: application/json

{"status": "ok"}

机上確認

任意課題

任意課題(デプロイ方式・ブランチ保護)に取り組んだ場合は、実際の設定画面のスクリーンショットを添付してください。

  • デプロイ方式: 採用したデプロイ方式の設定内容と、なぜその方式にしたか
  • ブランチ保護: どのようなルールで保護しているか

2.6 課題提出

下記内容を提出フォームより提出してください(提出はプレミアムプランでご利用いただけます)。

項目 内容
概要 構築したCI/CDパイプラインの構成・カバーしている範囲を簡潔に記載する
実装コード GitHub Actions のワークフローファイル、Terraform CI/CD 設定、および反映した GitHub リポジトリの URL
動作確認 アプリケーション・インフラそれぞれの CI/CD が自動で実行される様子を GitHub Actions の実行結果のスクリーンショットで記載する。加えて、デプロイ後の公開 URL に対する curl の実行結果を記載する
机上確認 任意課題(デプロイ方式・ブランチ保護)に取り組んだ場合は、設定がわかる画面のスクリーンショットを添付し、その方針を記載する
まとめ 実装中に苦労したこと、工夫したこと、学んだこと

設計・構築課題の伴走はプレミアムプランでご利用いただけます。

プランのアップグレード

3. メンタリング報告

以下の内容をメンタリングで報告してください(メンタリングはプレミアムプランでご利用いただけます)。

3.1 講座の振り返り

以下の要素それぞれについて、3つの観点で報告してください。

対象の要素

  • CI/CDパイプラインの概念
  • GitHub Actions
  • 静的解析・自動テストの自動化
  • コンテナビルド・デプロイの自動化
  • Terraform の CI/CD
  • Blue/Green デプロイメント
  • 保護ブランチ

報告観点

  • 概要
  • 何ができるのか?
  • 導入するメリット

3.2 提出課題の説明

提出した CI/CD パイプラインをもとに、以下の内容を報告してください。

  • どのような設計意図でパイプラインを組み立てたか
  • 手動運用と比較して得られたメリット
  • 実装中に工夫したこと・苦労したこと
  • デプロイ方式に取り組んだ場合は、その選定理由
  • ブランチ保護に取り組んだ場合は、保護ルールの内容

この教材は役に立ちましたか?

いいねをたくさんいただけると、制作者の励みになり、より多くのセクションが作れるようになります。

感想を一言(任意)

いただいたコメントは次の制作のヒントになります。ぜひお気軽にご投稿ください。

このコメントは他の受講生には公開されません。DevOps Camp運営が、教材改善のために確認します。

0 / 2000