SpringBootアプリケーションをCodePipelineを用いてBeanstalkに自動デプロイ


## 概要

[SpringBootアプリケーションをCodePipelineを用いてEC2インスタンスに自動デプロイ](https://qiita.com/tatsuakimitani/items/86258d80326ddc8091d9)
があったので、
[CodePipelineでSpringBoot on BeanstalkのCD/CIパイプラインを構築する](
https://springhack.com/codebuild-codedeploy-codepiplne%e3%81%a7springboot%e3%81%aecd-ci%e3%83%91%e3%82%a4%e3%83%97%e3%83%a9%e3%82%a4%e3%83%b3%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/)に倣ってBeanstalkに自動デプロイしました。


## 手順1 Githubにソースをコミットしておく
[spring initializr](https://start.spring.io/)でspringbootプロジェクトを作成し、
ローカルで動作確認します。

![スクリーンショット 2022-05-13 10.23.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/53709b1e-9b8c-7667-bc26-a4d795e4e97e.png)

動作確認できたら、自身のGithubのリポジトリにプッシュします。
![スクリーンショット 2022-05-13 10.30.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/a368b11d-7128-763f-05cf-caf1b10ffa55.png)

## 手順2 S3にバケットを作成しておく
S3に「sample-app-bucket」というバケットを作成します。
![スクリーンショット 2022-05-13 10.06.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/54e0a7a9-ff06-5a66-8b71-821fb3dcc548.png)

![スクリーンショット 2022-05-13 10.06.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/345ffaa7-19a2-fe7b-dee3-5428072deda9.png)

## 手順3 Elastic Beanstalkでアプリを作成する
![スクリーンショット 2022-05-13 10.36.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/217105fb-f49e-1c39-d425-419d44cb8c56.png)
環境が作成されています。

![スクリーンショット 2022-05-13 10.30.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/b574881c-4fcd-47b4-8b76-050f18a2ca19.png)
サンプルコードが動いてればOKです。

## 手順4 CodeBuildでビルドプロジェクトを作成する
![スクリーンショット 2022-05-13 10.42.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/6574185b-efb5-4d91-2237-8aec2eb5a4bc.png)
springbootプロジェクtのルート直下にbuildspec.ymlを作成します。

試しにビルドしてみましょう。
![スクリーンショット 2022-05-13 10.46.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/5c3a3006-8c1d-d007-1599-537a360b5a0f.png)
CodeDeployによるビルドが成功すればOKです。

## 手順5 CodePipelineで自動化する
ソースにGithubのリポジトリを、
ビルドステージに作成したCodeBuildプロジェクトを、
デプロイステージに作成したBeanstalkを指定して、
CodePipelineを作成します。

Githubのリポジトリはあるが、ブランチが見つからないと出る場合は、
リポジトリをpublicにしてください。
privateリポジトリは別途設定が必要なようです。

![スクリーンショット 2022-05-13 10.59.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/ee050212-77f7-f923-61cf-fa313903908d.png)
pipelineが最後まで成功することを見届けます。

## 手順6 GithubにPushされたらCodePipelineが開始するようにする

![スクリーンショット 2022-05-13 11.03.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/691d7f4a-b983-39ee-8aa4-22d1be0782c5.png)
github側でもAWSとの設定を作ってあげましょう。

## 動作確認
あとはプッシュして、Pipelineが動くか確認します。

![スクリーンショット 2022-05-13 11.05.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/b4c7da38-4f2f-04e4-2da8-275c095c5f65.png)
適当にSpringBootのファイルを編集します。
編集したらプッシュします。

![スクリーンショット 2022-05-13 11.06.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/94a06c4b-ea67-6486-3a08-dcbef275747d.png)
Pipelineが進行中になっています。
動いている証拠です。

![スクリーンショット 2022-05-13 11.18.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204035/6a9058ae-7724-11de-b0c8-f7fca2b41954.png)
Piplineが最後まで完了したら、BeanstalkのURLにアクセスします。
プッシュ内容が反映されていれば自動デプロイできています！

以上

## 参考にしたサイト
[springhack.com](https://springhack.com/)