CodeStarバンザイ！数クリックで始めるCI/CDパイプライン

CodeStarを使ってCI/CDパイプラインを構築してみたので、紹介します。

# CodeStarとは？

AWSのマネージドサービスであるCodePipeline、CodeCommit、CodeBuild、CodeDeployを使ってCI/CDパイプライン+実行環境をさくっと構築してくれるサービスらしい。

https://aws.amazon.com/jp/codestar/

よしっ、動かしてみるぞ！！

# 1.プロジェクト作成

マネジメントコンソールからCodeStarを選び、「start a project」をポチッ。
するとプロジェクトのテンプレートを選択する画面が表示される。

カテゴリは、Web application、Web service、Alexa Skill、Static Websiteから、
言語は、Ruby、Node.js、Java、Python、PHP、HTML 5から、
実行環境は、Beanstalk、EC2、Lambdaから選択できる。
※もちろん存在しない組み合わせもあります。

今の時代っぽいWeb Application×Node.js×Lambdaなんてのも選択できるんですね。

うーん、ここはCodeBuildも使ってみたいし「Web Application×Java Spring×EC2」を選択。

![使う1.png](https://qiita-image-store.s3.amazonaws.com/0/167500/889fbc9c-876a-73b2-df0d-6dac55d9bddb.png)

そして、プロジェクト名を入力。インスタンスタイプを設定して。ポチッ、ポチッ。

![使う2.png](https://qiita-image-store.s3.amazonaws.com/0/167500/cb35a071-6b7a-0931-e5f7-f954738e05a5.png)

。。。
はいっ、CI/CDパイプライン構築の作業はこれで終わり。

そして、待つこと10分。
CodePipeline、CodeCommit、CodeBuild、CodeDeployと、これを統合的に確認するためのダッシュボードがいい感じにできちゃいました。
もちろんjavaのwebアプリケーションも起動しています。

## ダッシュボード
![使う4修正.png](https://qiita-image-store.s3.amazonaws.com/0/167500/f5c2c7c4-4b17-0472-eb63-88c7c75c3090.png)


## CodePipeline
![使う8.png](https://qiita-image-store.s3.amazonaws.com/0/167500/93bd7424-4c5b-86b5-d13f-121b6dc7640e.png)

## CodeCommit
![使う5.png](https://qiita-image-store.s3.amazonaws.com/0/167500/bb9e936c-e27b-9d73-17a9-f433e6da0464.png)

## CodeBuild
![使う6.png](https://qiita-image-store.s3.amazonaws.com/0/167500/d97d2c08-0ec0-a075-d447-21ff3f972f3c.png)

## CodeDeploy
![使う7.png](https://qiita-image-store.s3.amazonaws.com/0/167500/9fbb7d9b-78fb-583d-1696-576ebae08195.png)

## デプロイされたjavaのwebアプリケーション
![12.png](https://qiita-image-store.s3.amazonaws.com/0/167500/b827c527-6976-0cc8-823f-316ba2d0042a.png)

# 2.CI/CDパイプライン実行
ここからが本番。
gitへの接続情報をIAMで確認（ユーザ⇒認証情報⇒AWS CodeCommit の HTTPS Git 認証情報「生成」)し、code commit上のソースコードをcloneする。
するとこんなものが落ちてきます。

```text:tree
.
├── README.md
├── appspec.yml
├── buildspec.yml
├── pom.xml
├── scripts
│   ├── install_dependencies
│   └── start_server
└── src
    └── main
        ├── java
        │   └── com
        │       └── aws
        │           └── codestar
        │               └── projecttemplates
        │                   ├── HelloWorldAppInitializer.java
        │                   ├── configuration
        │                   │   ├── ApplicationConfig.java
        │                   │   └── MvcConfig.java
        │                   └── controller
        │                       └── HelloWorldController.java
        ├── resources
        │   └── application.properties
        └── webapp
            ├── WEB-INF
            │   └── views
            │       └── index.jsp
            └── resources
                ├── gradients.css
                ├── set-background.js
                ├── styles.css
                └── tweet.svg
```

ふむふむ、なるほど。
ここは手っ取り早くCI/CDパイプラインを確認するため、index.jspをちょこっと修正。
そして、code commitにpush。
code commit上で、変更した内容も確認できます。

![使う11.png](https://qiita-image-store.s3.amazonaws.com/0/167500/998746dd-c408-6c99-a693-56639ebcb0ed.png)
すると。。。

![使う9.png](https://qiita-image-store.s3.amazonaws.com/0/167500/2a36f045-ae2e-2391-cf01-8a9831ea358e.png)

パイプラインが動き出したーーー
どうやら動きとしては、こんなことをやっているみたい。

- Source　：　新たしいコードがpushされると、code commitからソースコードを取得しS3に格納。
- Build　：　S3からソースコードを取得しビルド。そしてビルドしたモジュールをS3に格納。
- Application　：　S3に格納されたモジュールをEC2にデプロイ。


待つこと5分。デプロイまで成功。
そして、先程の画面を確認してみると。。。

![使う10.png](https://qiita-image-store.s3.amazonaws.com/0/167500/41f36ec4-e781-1268-d80f-06ba0288b5d2.png)

変わった！
簡単！！

# これを使えば
- Java、Rubyなどメジャーな言語を利用したCI/CDパイプラインを爆速で構築できる。
- Jenkinsから開放される。

# がしかし。。

- 東京リージョンにはまだ来ていない。
- CodeStarというかcode commit側の問題になるが、pull requestが使えない。。


本番用のアプリケーション開発環境・実行環境として利用するのは、まだまだ難しいような気もしますが、
pocくらいであればこれで十分かもしれませんね。