AWS CodeCommit を使った Pull Request 開発

 先日 CodeCommit に Pull Request (以下、PR)機能がリリースされました!!この記事では、PR機能の使い方について説明していきます。

念願だった Pull Request 機能

 AWS の Code シリーズはかなり魅力てきで、CodeBuild、CodeDeploy、CodePipeline を組み合わせてリリース自動化できるのは非常にありがたいです。ここらへんの作り込みは、しなければ生産性が落ちるし、してもビジネス的には価値がない部分なので、まるっと AWS が支援してくれるのは素晴らしいです。

 しかし、データソースの Git として CodeCommit しか選べず、自前の Git 環境をこのパイプラインに載せることはできません。では、Git 環境として CodeCommit を採用できるかというと、個人の開発ではいいと思うのですが、チーム開発では使うには機能が足りなすぎる印象でした。特に、コードレビューをする上で必須ともいえる PR 機能がなかったのが辛すぎました。そんななかで今回のリリース!チーム開発現場への Code シリーズ導入が見えてきた瞬間だと思います。

Pull Request 機能を使ってみる

 では使っていきます。既にリポジトリがある状態からスタートします。CodeCommit の使い方は下記にまとめていますので、よければ参考にしながらリポジトリを作ってみてください。

www.ketancho.net

また、以下の手順では下記の記事で作成したリポジトリを元に話を進めていきます。とはいえ、 index.html ファイルと CodeBuild 用の設定ファイルがあるで、 index.html を修正して PR を出すストーリーで進めていきます。

www.ketancho.net

ブランチ作成〜差分Pushまで

 新規ブランチを作成します。

$ git branch
* master
$ git branch feature/pr_sample
$ git branch
  feature/pr_sample
* master

ブランチを切り替えます。

$ git checkout feature/pr_sample
Switched to branch 'feature/pr_sample'
$ git branch
* feature/pr_sample
  master

Git 管理されているファイルを修正します。

$ vim src/index.html 

コミット&Pushします。

$ git add * 

$ git commit -m "add line for pull request."
[feature/pr_sample 567e258] add line for pull request.
 1 file changed, 2 insertions(+), 1 deletion(-)

$ git push origin feature/pr_sample
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 393 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommit2S3
 * [new branch]      feature/pr_sample -> feature/pr_sample

リモートPushまで完了です。

Pull Request を出す

 では、PRを出していきます。ブランチメニューから「プルリクエストを出す」を選択してください。

f:id:ketancho_jp:20171216071805p:plain

修正の内容や、レビューしてほしい内容を説明します。

f:id:ketancho_jp:20171216071810p:plain

差分の確認をし、問題がなければPRを出します。

f:id:ketancho_jp:20171216071831p:plain

 他の開発者とのコメントを通して、

f:id:ketancho_jp:20171216071842p:plain

問題がなければマージしてもらって(自身でマージして)ください。

f:id:ketancho_jp:20171216071851p:plain

CodeCommit のメリットとデメリット

メリット

導入が簡単で運用の手間もかからない

 Bitbucket や GitLab などの製品を自身で導入する場合、初期の構築が必要ですし、パッチ当てなどの運用作業も必要になります。CodeCommit は数分で設定が完了しますし、マネージド型なので運用作業も皆無です。ビジネスに繋がる作業に工数を集中できる、という意味では CodeCommit が一番といえます。

料金が安い

   2017/12 現在の料金体系は下記のとおりです。5人までなら通常の使い方であれば無料で使えますし、6人を超えても安価です。EC2上にGit環境を整えたり、外部サービスを利用するよりも大抵のケースで安いのではないかと思います。

f:id:ketancho_jp:20171216072607p:plain

他のAWSサービスとシームレスに連携する

 こちらが最も大きな利点と言えます。他のCode系のサービスと連携して、テストやデプロイを自動化することができます。スクリプトの作成もゼロからやるよりもかなり楽ですし、リリース前にレビューを挟むことも簡単にできます。

デメリット&改善してほしいところ

細かい機能が足りていない

 PR機能のリリースはありがたいのですが、普段 Bitbucket を使っていると機能が足りないと感じるシーンがありました。

  • レビューアの指定ができない
  • レビューアがレビュー残PRを見る機能がない

などです。ここらへんの機能がないとPR開発がなかなか大変なので、アップデートを期待したいです。

まとめ

 PR 機能は念願の機能だったのでかなりありがたいです。PR 開発する準備がほぼ整ったと言えるので、これを機に Code シリーズの導入を始めてはいかがでしょうか?