CircleCIとGAEでCI/CDする

1. GCEのCI/CDツールとしてCircleCIを利用する

CirclCIを利用するとアプリケーション開発のテスト/デプロイが簡単に実現できます。
これをパブリッククラウド上で提供されるSaaSやPaaS向けに利用しようとすると、 各パブリッククラウドサービスが提供するリポジトリ/開発環境を利用するか、外部APIを試用した操作を行うことになるのかなと思います。
個人的には各パブリッククラウドにソースコードを分散させずに、管理の容易さからソースコードを一か所(Github)にまとめておき、CI/CDツールもできるだけ共通のものを利用したいと考えています。そこでCirlceCIからGAEへアプリケーションのデプロイ/テストをしてみました。

2. 連携設定

事前にGithubでのgitリポジトリの作成、gitリポジトリとCircleCIの連携については既に設定済のもとして、CircleCIとGoogle Cloudの連携設定について記載します。

2-1. Google Cloudの設定

プロジェクトIDの確認

連携するGCPのプロジェクトを新たに作成する場合は新規に作成します。
CircleCIからGCPの操作を行う際に、プロジェクトIDが必要となりますので、 新規にプロジェクトを作成した場合は、作成時の画面からプロジェクトIDをメモしましょう。
既存のプロジェクトを利用する場合は、プロジェクト選択の画面からプロジェクトIDを確認しておきます。

IAMアカウントのキーを取得

次に[IAMと管理]の[サービスアカウント]を開きます。

利用するIAMユーザを選択し、右端の縦三点のメニューから、「編集」をクリックします。 次に「キーを作成」ボタンをクリックし、JSON形式でキーを作成します。

作成したJSON形式のキーは外部に漏洩する事が無いよう、Gitリポジトリの管理対象外のローカル作業フォルダに保存するか、.gitignoreで指定し、gitリポジトリに登録しない形でローカル作業フォルダのファイルに保存しておきます。(ここでは circleci-gcp.json とします。)

2-2. CircleCIとGoogle Cloudの連携設定

作成したGitリポジトリに移動し、作成したJSON形式のキーファイルをBASE64でエンコードしたファイルを作成します。

$ base64 circleci-gcp.json > circleci-reg-key.txt

CircleCIにGooglCloudを操作するための環境設定項目を設定していきます。 CircleCIにログインし、[Project Settings]を開きます。

左のメニューから、[Environment Variables]を開きます。

[Add Variable]ボタンを押し、環境設定項目を設定していきます。

設定はName及びValueを設定します。設定が必要な項目は以下の3点です。

circleci-gcp.jsonの内容

Name Value
GCP_PROJECT_KEY GCPのプロジェクト名
GOOGLE_COMPUTE_ZONE デプロイするRegion(例えば us-east1)
GOOGLE_PROJECT_ID プロジェクトの作成 で確認したプロジェクトID

2-3. コンフィグファイルの作成

Cloud Runを動かすには、config.yml, Dockerfile, プログラムファイルを作成します。ファイル作成後、commit, pushするとCircleCIによるbuildが開始されます。
サンプルコードは以下。

github

AppEngineに似たサービスとしてCloud Run, Cloud Functionsがあります。
使い分けはアプリとしてデプロイするか、コンテナとしてデプロイするかの違いになるようです。

cloud.google.com

3. 参考URL

orb gcp-cli
python-sample
Pre-Built CircleCI Docker Images
circleci config.yml sample

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る