Cloud Buildを利用してApp Engineへデプロイ

Webサービスを構築・更新する際、デプロイするためにローカルからまたはサーバ上でコマンドを入力し、適切な位置へファイル群を配置したりします。この手順を自動化するために Jenkins や Circle CI など自動化する CIツール が利用されたりします。 本ブログでもよく出てくる Google App Engine (GAE) などもJenkinsを利用して自動化できますが、サーバにCloud SDKのインストールが必要であったり、インストールされているプログラミング言語のバージョンなど注意が必要です。 そこで今回紹介するのは Cloud Build です。これは Google Cloud Platform (GCP) で用意されているCIツールであり、GCPのサービスをうまく連携することができます。特に GAE との相性はとてもよく、簡単に設定することができます。 それでは Cloud Build を利用して GAE へデプロイしてみましょう。

手順

Cloud Build を利用して GAE へデプロイする手順は以下の通りです。ここでは事前にCloud Source Repositories上にApp Engine 用のプロジェクトが存在することを前提に説明します。利用したプロジェクトはGAEのチュートリアルである hello_world です。これを私のアカウントのリポジトリとして用意しました。 https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard_python37/hello_world
  • Google App Engine を有効にする
  • App Engine Admin API を有効にする
  • Cloud Build のトリガーを作成
  • Cloud Build サービスアカウントにApp Engineの権限を追加する
  • cloudbuild.yaml を作成し Push する
では順番に確認しましょう。

1. Google App Engine を有効にする

GCPのコンソールより「App Engine」を選択し、Google Cloud Platform 上に GAE を配置するためのプロジェクトを作成します。もちろん既存プロジェクトでも問題ありません。そして Google App Engine を表示し有効にします。

2. App Engine Admin API を有効にする

GCPのコンソールより「APIとサービス」を選択し、画面上部にある「APIとサービスを有効化」ボタンをクリックします。 「APIとサービスを検索」から「App Engine Admin API」を探しクリックします。 「有効にする」ボタンをクリックすると App Engine Admin API が有効になります。

3. Cloud Build のトリガーを作成

GCPのコンソールより「Cloud Build」を選択し、「Cloud Build APIを有効にする」ボタンをクリックします。 GCPのコンソールより「Cloud Build > トリガー」を選択し、画面上部にある「トリガーを追加」ボタンをクリックします。 「1. ソースを選択」では、プロジェクトのリポジトリホスティングサービスを選択します。今回私は「Cloud Source Repositories」にファイルを置いているので、これを選択します。 「2. リポジトリを選択」では、プロジェクトのリポジトリを選択します。 「3. トリガーの設定」では、ビルドのトリガーとなるPushを設定します。ここでは一例として、masterブランチにPushされたときにビルドを開始するように設定します。
  • トリガーのタイプ … ブランチ
  • ブランチ … master
  • ビルド設定 … Cloud Build 構成ファイル
  • Cloud Build 構成ファイルの場所 … /cloudbuild.yaml
ここで、cloudbuild.yaml はまだ用意していないですが、この後作成します。トリガーを作成するタイミングではまだ存在しなくても大丈夫です。

4. Cloud Build サービスアカウントにApp Engineの権限を追加する

GCPのコンソールより「IAMと管理」を選択し、「Cloud Build サービス アカウント ( xxxxx@cloudbuild.gserviceaccount.com )」の編集ボタンをクリックします。 そして「+別の役割を追加」より「App Engine管理者」を追加します。

5. cloudbuild.yaml を作成し Push する

それではプロジェクトに「cloudbuild.yaml」を作成します。その内容は次のように記述します。には、選択しているプロジェクトのIDを入力してください。
steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy', 'app.yaml', '--project', '']
では、このファイルを Commit して master ブランチに Push しましょう。 そして、GCPのコンソールより「Cloud Build」を選択します。すると、ビルドが自動で開始されていることがわかります。

まとめ

私も以前は Jenkins を利用して自動ビルド・デプロイを行っていましたが、断然 Cloud Build を利用したほうが簡単です。ぜひ Cloud Build と Google App Engine を組み合わせて利用してみてください。
» エンジニア登録はこちら