CodeBuild で GitHub のプルリクエストを自動ビルドして、結果を表示する

77件のシェア(ちょっぴり話題の記事)

ども、藤本です。

以前、下記ブログをエントリしました。

CodeBuild で GitHub の pull request をビルドできるようになりました

CodeBuild で GitHub のプルリクの ID を指定することでプルリクしたブランチのソースコードをビルドできるようになったというリリースです。また本エントリの中で、プルリクの都度手動でビルドを実行するのは大変なので、プルリクが発行されたら自動でビルドを実行する実装方法をご紹介しました。

が、実はこの設定、CodeBuild から自動でできるようになっていました。更にプルリクのステータスにビルド結果をフィードバックもしてくれます。↓のやつ。素晴らしい。

概要

GitHub に限らず、Git によるソースコード管理での開発フローにプルリクを利用することが一般的になってきたかと思います。合わせて、テストやコードスタイルチェックのような仕組みを導入されている方も多くいらっしゃいます。CodeBuild はリリース当初はプルリク未対応などで既存の開発フローに乗せることが難しかったのですが、もうプルリクに対応したし、VPC 内のリソースにアクセスできるし、CI サービスやソフトウェアから移行できる選択肢に入ってきたのでは?

設定方法

Webhook のチェックボックスを有効化するだけです。

ただ、条件として、Webhook の設定が必要となりますので、CodeBuild から GitHub にログインして、権限を与える必要があります。CodeBuild で GitHub リポジトリをソースコードとして指定する場合、パブリックリポジトリの clone URL を指定する方法、パブリック/プライベートリポジトリに関わらず、GitHub にログインして、ログインユーザーが権限を持つリポジトリを指定する方法があります。Webhook の設定を行う場合、後者の指定方法を行う必要があります。

確認

適当にブランチ切って、ソースコードを修正して、プルリクを発行します。

$ git checkout -b feature/fix-issue-01
Switched to a new branch 'feature/fix-issue-01'

### ソースコードを適当に修正

$ git commit -am "fix issue 01"
[feature/fix-issue-01 9160a9d] fix issue 01
 1 file changed, 4 insertions(+), 1 deletion(-)

$ git push origin feature/fix-issue-01
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 447 bytes | 447.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To ssh://github.com/s-fujimoto/testpy.git
 * [new branch]      feature/fix-issue-01 -> feature/fix-issue-01

$ git pull-request
https://github.com/s-fujimoto/testpy/pull/4

プルリクを発行すると、自動でビルドが始まり、ビルド中のステータスが表示されます。

Detailsリンクから CodeBuild のビルド詳細ページを開くことができます。

ビルドが失敗するとちゃんとビルド失敗のステータスになり、マージできない状態となりましたね。

まとめ

いかがでしたでしょうか?
CodeBuild でプルリク対応できるようになり、ケースによっては CI サービスに求めていることが CodeBuild で出来るようになっているのではないでしょうか? CodeBuild は完全従量課金制なのでケースによっては既存の CI サービスより安く利用できるかもしれません。是非、比較検討されてみてはいかがでしょうか。