Edited at

CodePipeline, CodeCommit, CodeDeploy を使ったデプロイ

More than 1 year has passed since last update.

CodeCommit が東京リージョンでも使えるようになったので, Code~ 系を使ってデプロイを統合します.

※github を使っている場合は CodeDeploy で直接デプロイできます.

以前の記事 AWS CodeDeploy 導入調査 AWS 設定編 ではソースコードを zip 化して

S3 にアップロードして CodeDeploy でデプロイという方法を取っていました.

この方法だとチーム運用するには CI サーバー等がないとちょっと厳しそうだったのですが,

CodeCommit を使用することによりその辺りのハードルが少し下がります.


CodeCommit

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

言うなれば AWS の git ホスティングサービスです.

ただし現時点(2017/06月)では PullRequest 機能もありませんのでメインのソースコード管理サービスとして他から移行するのは厳しいです.

ただ AWS 内のサービスということで他の Code~ サービスとのコラボレーションを期待できます.


リポジトリ作成


  1. "リポジトリの作成" ボタンからリポジトリ名を入力

  2. 以上


CodePipeline

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

CodeCommit を使っても直接 CodeCommit -> CodeDeploy でデプロイすることはできません.

CodePipeline を使ってデプロイワークフローに沿ってデプロイします.

単純なデプロイだけでなく, CodeBuild を使ってビルドを挟んだり,

jenkins と連動してデプロイ前にテストをしたりとなかなか便利です.


パイプラインの作成

AWS コンソール上でのパイプライン作成方法の流れ

1. パイプライン名を適当に "test"

2. ソースコードプロバイダは "CodeCommit" 

 リポジトリとブランチを指定

3. ビルドは今回スクリプト言語想定なので "なし"

4. デプロイプロバイダは "CodeDeploy" アプリケーション名等は以前の記事参照

5. サービスロールは初回なら "ロールの作成" から作成

6. 最後に内容確認して終了


デプロイまでの流れ


  1. ソースコードコミット&プッシュ (ローカル)

    社内で使っているのは BitBucket なので普通にプッシュします

  2. BitBucket と CodeCommit の同期

    ここはどうしようか検討中

  3. CodePipeline 上で "変更のリリース" を選択

  4. デプロイが完了するまで待つ


まとめ

以上 Code~ を使ったデプロイを簡単にまとめてみました.

デプロイ周りが整っているプロジェクトなら無理に移行する必要はないかと思いますが,

こうしたサービスの機能を利用したデプロイの価値はデプロイツール自体のメンテナンスを

ある程度省けるところにあると思います. (ある程度です)


今後の課題

BitBucket と CodeCommit の同期部分が決まってません.

手動同期はイケてないので何か方法を考えなければなりません.

この記事の内容とか試してみようかと(BitBucket の Webhook を API GateWay で受け取って Lambda 起動)

https://aws.amazon.com/jp/blogs/devops/integrating-git-with-aws-codepipeline/

(2017/5/30追記)CodeCommitのHTTPSによる接続が普通に可能なためBitBucketならミラーフックでよい模様