sachaos.md
----------

Cloud Run へ GitHub Actions を利用して CD する GitHub テンプレートを公開した

## はじめに

Cloud Run を利用するとコンテナイメージさえ用意すればシュッとデプロイして公開できます。 僕は Slack の Bot などで簡単な HTTP サーバーが欲しいときに Cloud Run を使っています。

GitHub Actions を利用して Cloud Run への継続的デリバリーを行う GitHub テンプレートを公開しました。

テンプレートなので新しいプライベートレポジトリに利用することも出来ます。気軽に使ってみてください。

sachaos/cloud-run-with-github-actions

## 機能

  • GitHub Actions
    • Docker イメージのビルド
    • GCR ( Google Container Registry ) へのイメージのアップロード
    • Cloud Run へのデプロイ
  • GitHub Deployments API を利用した Deploy 状況の管理

## 使い方

基本的には README に書いている通りです。

### 1. GCP プロジェクトをセットアップする

利用する GCP プロジェクトを用意して、 Google Container Registry API と Cloud Run API を有効化する必要があります。

これは課金設定が必要です。

以下の URL の {project-id} 部分を用意した GCP プロジェクト ID に置き換えてアクセスしてください。

### 2. GitHub Actions が利用する GCP のサービスアカウントを用意する

GCP のサービスアカウントを作成し、以下のロールを付与してください。

  • サービス アカウント ユーザー (Service Account User)
  • Cloud Run 管理者 (Cloud Run Admin)
  • ストレージ管理者 (Storage Admin)

若干過剰な権限を付与しています。 気になる方はご自身で調べて付与することを推奨します。

サービスアカウントの JSON 鍵を取得して Base64 でエンコードした値を GitHub Secrets に保存してください。

### 3. GitHub secrets に以下のシークレットを保存する

  • GCP_PROJECT_ID 用意した GCP のプロジェクト ID
  • SERVICE_NAME 任意のサービス名
  • GCLOUD_AUTH Base64 でエンコードしたサービスアカウントの鍵
  • GCP_REGION デプロイするリージョン(asia-northeast1 等)

## 動作確認

ここまで正しく設定できていれば、以下のように GitHub Actions が実行され正常に終了するはずです。

https://github.com/sachaos/cloud-run-with-github-actions/actions

actions

GitHub の Deployments API を利用しているので、 どのコミットまでデプロイされているのかなどの情報を GitHub を離れることなく確認することが出来ます。

また、このページから「View deployment」を押すことで Cloud Run のコンソールにジャンプ出来るようにしています。 下記のテンプレートレポジトリでは僕以外は見れないようになっていますが。。。

https://github.com/sachaos/cloud-run-with-github-actions/deployments

deployments

## まとめ

GitHub Actions を利用してCloud Run への継続的デリバリーを行う GitHub テンプレートを公開しました。

GitHub Actions を利用することでデプロイのワークフローの設定が出来、 さらに GitHub Deployments API を利用することでデプロイされているバージョンの一覧化などが出来ます。

GitHub の中でこれらの情報が完結しているのは便利だなぁと感じます。