CI/CDパイプラインの構築
GitHub Actionsを使用して、APIのテスト・ビルド・デプロイを自動化するCI/CDパイプラインを構築します。コードをプッシュするだけでAWS環境に自動デプロイされる状態を目指します。
- GitHub Actionsで静的解析・自動テストを自動実行する
- DockerイメージのビルドとECRへのプッシュを自動化する
- ECSサービスを自動更新し、デプロイを完全自動化する
1. 必須要件
GitHub Actionsを使用して、以下のCI/CDパイプラインを構築してください。
1.1 CIパイプライン(プルリクエスト時に自動実行)
- API構築で導入した静的解析(Flake8、Black、mypy など)が自動実行されること
- API構築で作成したPytestによる自動テストが実行されること
- 静的解析またはテストが失敗した場合、プルリクエストのマージをブロックすること
- GitHubのブランチ保護ルールを設定し、CIの成功をマージの必須条件にすること
1.2 CDパイプライン(mainブランチへのマージ時に自動実行)
- API構築のDockerfileを使ってDockerイメージをビルドすること
- ビルドしたイメージに適切なタグ(コミットハッシュなど)を付けてECRにプッシュすること
- ECSサービスを更新し、新しいイメージでタスクが起動されること(ローリングアップデート)
- デプロイ後、ALB経由でAPIが正常にレスポンスを返すことをヘルスチェックで確認すること
1.3 セキュリティ
- AWSの認証情報はGitHubのSecretsに登録し、ワークフローファイルにハードコードしないこと
- シークレットとして管理する値の例:
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_REGION、ECR_REPOSITORYなど
1.4 ワークフローの品質
- ワークフローファイル(
.github/workflows/)に各ステップの目的がわかるコメントを記載すること - CIとCDのワークフローは別ファイルに分けて管理すること
2. 提出物
- GitHubリポジトリのURL
- mainブランチに最新のコードがマージされている状態にすること
- README.mdに以下を記載すること
- CI/CDパイプラインの概要(どのタイミングで何が実行されるか)
- GitHub Secretsに設定が必要な値の一覧
- パイプラインの動作確認手順
3. パイプライン構築の進め方
CIとCDを分けて段階的に構築することをおすすめします。
- CIパイプラインの作成 … プルリクエスト時にPytestを実行するワークフローを作成する
- CIの動作確認 … テストが成功するプルリクエストと、失敗するプルリクエストをそれぞれ作成し、パイプラインの動作を確認する
- ブランチ保護ルールの設定 … mainブランチへのマージにCIの成功を必須とする
- CDパイプラインの作成 … mainマージ時にDockerビルド → ECRプッシュ → ECSデプロイを実行するワークフローを作成する
- CDの動作確認 … コードを変更してmainにマージし、自動デプロイが正しく行われることを確認する
| 💡 ポイント |
|---|
| CI/CDパイプラインが完成すると、コードの変更からデプロイまでが自動化されます。これにより、手動でのデプロイ作業がなくなり、ヒューマンエラーのリスクも軽減されます。DevOpsの実践として非常に重要なスキルです。 |
4. 参考講座
- DevOpsの概要
- CI/CDパイプラインの概要
- GitHub Actionsの概要
- 簡単なワークフローを作ろう
- GitHub Actionsの応用設定
- 静的解析と自動テストを自動化しよう
- コンテナのビルドとデプロイを自動化しよう
5. 目安期間
2週間
6. おわりに
CI/CDパイプラインまで完成したら、コースAの必須ステップは完了です。設計からAPI構築、インフラ構築、コード化、CI/CDパイプラインまで、一連の流れを自分の手で構築できたことは大きな成果です。
さらに実務で求められる応用スキルを身につけたい方は、発展課題に挑戦してみてください。セキュリティテスト、Blue/Greenデプロイメント、AWSセキュリティサービス、オブザーバビリティ、E2Eテスト、性能テスト、ChatOpsなど、現場で重宝されるテーマを扱っています。