GitHubとGoogle Cloud Build の連携を試してみた!

Yuki Iwanari
google-cloud-jp
Published in
6 min readJul 31, 2018

--

CI/CDしてますか?

Google Cloud Next ’18 にて、Google Cloud と GitHubのコラボレーションが発表されました!
Blog: Google Cloud and GitHub collaborate to make CI fast and easy

[画像出典] The GitHub Blog : GitHubとGoogle Cloud BuildでCIプロセスをシンプルに

このIntegrationにより、GitHubにソースコードをpushする度に、自動的にビルドが実行され、その結果がGitHub のPull Requestで確認することができます。

簡単な設定だけで、CI(Continuous Integration: 継続的インテグレーション)プロセスをシンプルにすることができます!!

しかも、全リポジトリを対象にしておくと、新しいリポジトリを作った際も、追加の設定は不要自動でビルドが実行されます。もちろん、設定済みのリポジトリについて、Pull Request / ブランチを作った際にも、個別のジョブ作成は不要です!

CIを実現する上での課題

github.com を利用して開発を行う場合、自環境 / SaaSなどを利用し、自身でCIの仕組みを構築する必要がありました。
その為、以下のような苦労があったのではないでしょうか?

  • CI環境 / ビルド環境の構築、運用、監視の工数
  • ジョブの管理工数(対象が増える際に、新規にジョブを作成するなど)
  • CIサーバを常時稼働 / 並列化 / 高速化させるためのインフラ/サービス利用コスト

Cloud Build とGitHubの連携で、CIプロセスがシンプルに

具体的な連携は、下記のようになっています。

  • リポジトリ内にDockerfileがある場合は、それを検出して、1ステップでコンテナイメージの自動ビルドを設定可能
  • よりadvancedなユースケースの場合は、 cloudbuild.yaml によりCloud Buildのカスタムビルドステップを設定可能(ビルド、テスト、デプロイなど)

GitHub is excited to partner with Google to make CI for cloud-native application development painless. The ability to use Cloud Build for CI as a part of the GitHub workflow is just the start of this partnership and we look forward to building more in the future with Google

ブログにもあるように、今後も更なるIntegationが期待できそうです。

やってみた

では、実際にどのように利用できるか、試してみましょう。

アプリケーションの準備

今回ビルドするアプリケーション、およびDockerfileを準備しましょう。
以下をforkして使うのがお手軽です。

Google Cloud Build appのインストール

まず、GitHub app pageで、Google Cloud Build appをインストールしましょう。以下、スクリーンショットを貼っておきました。

(必要に応じて)リポジトリを指定
GCPの認証へ進む
Cloud Consoleでの設定画面

ビルドを実行

Google Cloud Build appは、(Pull Request含め)ブランチを作成 / 変更した際にビルドを実行します。ソースコードに変更を加えて、ブランチを作成しましょう(github.comのGUIから実施するのがお手軽)。

ブランチを作成すると、以下の様に自動的にビルドが実行されます。GitHub上でビルド結果を見ることができるので、特に問題無ければ、GCPの画面を見ることなく、このままPull Requestをマージできちゃいますね。

Pull Request 画面
ビルド詳細

GCP 側を見てみると、Google Cloud Build でビルドが実行され、Google Container Registry にイメージがpushされているのが分かります。

Google Cloud Build のビルド履歴
Google Container Registry の画面

まとめ

いかがでしたでしょうか?

CIを扱う場合、メンテしていくのが難しいといった課題が有ったかとおもますが、簡単な設定だけPull Requestへの結果書き込みまでが実現できました(Dockerfileがあれば、設定ファイルを書く必要すら有りません)。

Cloud Build はフルマネージドはCI/CDプラットフォームなので、Cloud Build の監視であったり、パフォーマンスを気にする必要は有りませんので、一度連携してしまえば、あとはインフラを意識することなく、スケーラブルで高速なビルドを活用することができます。

Cloud Build は、1 日あたり最初の 120 ビルド分の無料枠が有りますので、まずは設定してみて、この便利さを実感して見て下さい!

--

--

Yuki Iwanari
google-cloud-jp

Customer Engineer in Google Cloud. All views and opinions are my own.