Help us understand the problem. What is going on with this article?

AWS CodeStarで始めるフルマネージドCI/CD

TL;DR

AWS CodeStar触ってみた系の記事です

どちらかというとアプリケーションエンジニア目線での内容になります

  • CI/CDが大切らしいけど、何から始めたらいいかわからない
  • CIツールたくさんあってどれを使えばいいかわからない
  • うちはAWS使ってるんだけどマネージドなサービスはないのかな?

という方はお試ししてみるといいと思います

私自身CodeStarはおろか、Code兄弟は1つも触ったことがありません

準備

AWSアカウントを取得しておきましょう

無料枠もありますし、個人の学習目的で利用する分には登録しておいて損はないと思います

手順

プロジェクトを開始する

サービス一覧からCodeStarを選択します

1.png

サービスロールの作成

2.png

「ロールを作成します」を選択して進みます

プロジェクトのテンプレートの選択

3.png

テンプレートがたくさんありますが、左サイドバーでフィルタリングできるので、ご自分の希望にあったものを探してみてください

ここで選択した言語/FWによって、CodeStarの構成が変わってきます

4.png

今回はなるべく多くのAWSサービスを含みたかったので、Go/LambdaのWebアプリケーションを選択しました

プロジェクト詳細

5.png

プロジェクト名とリポジトリを選択します

GitHubも選択できるみたいですが、今回はAWS CodeCommitを利用します

プロジェクト詳細の確認

6.png

今回作成される構成の確認です

  • ソース管理にCodeCommit
  • ビルド(CI)にCodeBuild
  • デプロイにCloudFormation(CodeDeploy)
  • モニタリングにCloudWatch

という構成になるようです

選択している言語/FWによってはビルドフェーズがなかったり、デプロイがBeanstalkだったりします

この辺の構成を自分でこだわっていきたい方はCodeStarを使わずに自前で設計すればよくて、CodeStarはあくまでその辺の設計を良い感じに代行してくれるサービスだよという位置づけのようです

ユーザー設定のセットアップ

7.png

初めてのアクセスではユーザー初期設定に遷移しますが、これはCodeStarメンバーとしてのユーザー名/Eメールの設定です

利用したいユーザー名/Eメールを設定します

コードの編集方法の選択

8.png

いつでも変更できるということなので、ここではコマンドラインツールを選択します

ツールに接続する

9.png

Gitの設定からcloneまでの手順が示されるので、従って設定していきます

HTTPSの使用が推奨されているので、特に必要がなければ従っておくのがよさそうです

CodeCommit での IAM の使用: Git 認証情報、SSH キー、および AWS アクセスキー

作成したHTTPS Git認証情報を利用してリポジトリをcloneすると、初期コミットで以下のファイルが含まれていました

    Initial commit made by AWS CodeStar during project creation.

 README.md                          |  65 ++++++++++++++++++++++++++++++++++++
 buildspec.yml                      |  57 ++++++++++++++++++++++++++++++++
 main.go                            |  31 +++++++++++++++++
 main_test.go                       |  26 +++++++++++++++
 public/assets/css/gradients.css    |  25 ++++++++++++++
 public/assets/css/styles.css       | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public/assets/img/tweet.svg        |  15 +++++++++
 public/assets/js/set-background.js |   3 ++
 public/index.html                  |  74 +++++++++++++++++++++++++++++++++++++++++
 template-configuration.json        |   6 ++++
 template.yml                       |  56 +++++++++++++++++++++++++++++++
 11 files changed, 549 insertions(+)

プロジェクト作成完了

ここまで済んだらプロジェクト作成完了のようです

CodeStarプロジェクトのダッシュボードにアクセスできます

10.png

サイドバーにはCodeCommit/CodeBuild/CodeDeploy/CodePipelineの各サービスへの導線があります

開発チームメンバーや拡張機能、プロジェクトリソースの管理もCodeStarで行えるようです

JIRAと連携してタスク管理なんかも可能なようですね

アプリケーションの動作確認

CodeStarダッシュボードのメニュー内、アプリケーションのエンドポイントを見ると、すでにエンドポイントが一つ有効になっています

アクセスすると以下のようなWelcomeページが確認できます

11.png

どうやら初期コミットの状態ですでにデプロイされているようなので、一部変更して反映までの流れを確認してみます

CodeCommitでプルリクエストの作成

12.png

ローカルでブランチを作成してプッシュすると、CodeCommit > リポジトリ > ブランチに反映されます

作成したブランチを選択してプルリクエストを作成できます

13.png

普段GitHub等でプルリクエストを使っている人には特に問題ないと思いますが、チームで開発を行う際にはプルリクエストをベースにレビュー等を行います

デフォルトの設定ではブランチやプルリクエストを作成してもビルド以降のフェーズは実行されません

マージしてmasterブランチに取り込んでみます

14.png

マージの種別等が選択できます

詳しく知りたい人は「git merge 種類」とかで調べてみてください

パイプラインの実行

15.png

プルリクエストがmasterブランチへマージされると、自動でパイプラインが実行されます

しばらく様子を見てみます

16.png

17.png

どうやらビルドが失敗しているようです…CodeBuildで詳細を確認してみます

(今回は意図的にビルドが失敗する変更をコミットしています)

18.png

ビルドログや実行時のパラメータを確認しながら修正します

19.png

不具合の修正と画面に表示する文字列の変更を行いました

こちらのプルリクエストを再度マージしてみます

20.png

再びビルドが始まりました

21.png

ビルドが成功したようです

22.png

デプロイも成功したようです

先ほどのページにアクセスして画面の確認をしてみます

23.png

変更した文字列が反映されています

まとめ

最後の方は駆け足でしたが、一通りのサイクルを回してみました

このように、開発者がビルドやデプロイの仕組みを気にせずアプリケーションの開発に注力できるのが、CodeStarの魅力です

また、開発者にCIツールやデプロイの知識があまりなくても、パイプラインファーストな開発環境が準備できるのもありがたいです

慣れてきたらアプリケーションに合わせてカスタマイズをしたり、自分でパイプラインを設計したり、至高のCI/CDパイプラインを実現する5つの約束を意識して開発していくのがよいのかなと思います

※ 本稿は2019/7時点での情報になります

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away