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が開始されます。
サンプルコードは以下。
AppEngineに似たサービスとしてCloud Run, Cloud Functionsがあります。
使い分けはアプリとしてデプロイするか、コンテナとしてデプロイするかの違いになるようです。
3. 参考URL
orb gcp-cli
python-sample
Pre-Built CircleCI Docker Images
circleci config.yml sample
ピンバック: CircleCI OrbsでパブリッククラウドをCI/CDする – くじらぴーまん