💭

AWS CodePipelineでビルド/デプロイを繋げる

2022/10/22に公開

AWS CodePipelineでビルド/デプロイを繋げる

前回、前々回でCodeBuild、CodeDeployでビルドとデプロイする環境を構築しました。
それぞれの処理を実行するためにAWSマネジメントコンソールから手動で実行していましたが、今回はこれを自動化します。
ソースコードがGitHubにPushされたら、自動でビルド→デプロイが実行される環境を構築していきます。

今回は今までの作成したものをつなぎ合わせるだけなので、すぐに構築できます。

システム構成

前回、前々回の記事に掲載した、最終的な構成図です。
今回はこの構成を完成させます。

EC2インスタンスの起動

パイプラインを作成すると自動でビルド/デプロイが実行されますので、事前にEC2インスタンスを起動しておきます。

CodePipelineについて

CodePipelineとは、という説明をする前に構築してしまった方が理解が進むと思いますので、ここでは割愛します。
以下は公式ドキュメントです。が、読むより、まずは作ってみることをお勧めします。
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/welcome.html

CodePipelineの作成

デベロッパー用ツール - CodePipiline - パイプラインの画面を開いて、パイプラインを作成するボタンをクリックします。

パイプライン全体に関する設定を行います。

  • 名称は適当なものを入力
  • サービスロールについては新規で作成して、必要なポリシーは自動で付与してもらう

ソースステージの設定を行います。
GitHubの接続情報やリポジトリ、ブランチ名などを入力します。
ここでは、該当のブランチにPushされるとパイプラインの処理を起動したいので、ソースコードの変更時にパイプラインを開始するにチェックを入れます。

ビルドステージの設定を行います。
ここは今までに作成したビルドプロジェクトを指定します。

デプロイステージの設定を行います。
ここもすでに作成してあるCodeDeployアプリケーションとデプロイグループを指定します。

確認画面で問題ないようであれば、作成ボタンをクリックします。

パイプラインが作成され、自動でパイラインが開始されます。

処理が正常に終了したことが確認できました。

簡易的な確認

簡易的に確認します。
EC2にsshで接続して、配置されたファイルのタイムスタンプを確認してパイプラインによるデプロイが完了した時刻と一致するか確認します。

ls -l app

GitHubへのPushによる確認

今度はGitHubへPushしてパイプラインが起動するか確認しましょう。

事前にCodePipelineの画面を開いておきます。

デプロイの回で実施したようにControllerクラスとテストくらいを修正して、nameを変更してみましょう。
その後、CommitしてPushしましょう。

CodePipelineの画面でパイプラインが開始されていることを確認します。
今度はEC2にsshで接続して、APIが変更されていることを確認します。
返却されるJSONが変更されていれば、動作確認完了です。

まとめ

これで簡単なSpring Bootアプリケーションを作成して、AWS上でCI/CD環境を構築する記事は終了となります。
本番環境に適用するにはGitブランチの対応など必要なことはありますが、大きな流れは今回のものをベースにできるのではないかと思います。
CodeBuild、CodeDeploy周りは詳しい記事が少なかったので、参考になれば幸いです。

Spring BootアプリケーションでWebアプリケーションを作成する際にAWSで稼働させる方法としてはECS + Fargateなどの構成も取れます。
この場合は以下な流れになり、また環境構築方法が変わってくるかと思います。

  • ビルドフェーズでdockerコンテナを作成して、ECR(Dockerコンテナのレジストリ、保管場所)にPUSH
  • デプロイフェーズでdockerコンテナをFargateにデプロイ

本番運用を考えると、サーバーの管理する範囲が削減できたり、複数面の環境(本番、ステージング、開発など)を用意に構築できたり、とクラウドならではメリットがあり、魅力的なので、今後試してみたいと思っています。

では、今回の記事は以上となります。

記事一覧

第一回 Spring Bootを使ったWebAPIの作成

第二回 IntelliJ IDEAを使って、Spring BootプロジェクトをGitHubにPush

第三回 Dockerコンテナ上でSpring Bootアプリケーションのビルド

第四回 AWS CodeBuildでSpring Bootアプリケーションをビルド

第五回 AWS CodeDeployでSpring Bootアプリケーションのデプロイ

第六回 CodePipelineでSpring BootアプリをCI/CD

Discussion