😽
CloudRun × Artifact Registry × GitHub Actionsでデプロイを自動化
上記の記事で、DjangoとDockerを用いた開発環境の構築とCloud Runへデプロイを行いました。
今度は、GitHub Actionsを使ってmainブランチがpushされたら自動的にCloud Runへデプロイするようにします。
GitHub Actionsワークフロー用のYAMLファイルの作成
プロジェクトディレクトリ直下にGitHub Actionsワークフロー用のYAMLファイルの作成し、jobs定義します。
.github/workflows/deploy_to_cloudrun.yml
で作成します。
name: Deploy to Cloud Run
on:
push:
branches:
- main
env:
PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
SERVICE_NAME: ${{ secrets.SERVICE_NAME }}
IMAGE: ${{ secrets.GCP_IMAGE }}
REGION: ${{ secrets.GCP_REGION }}
TAG: latest
jobs:
setup-build-publish-deploy:
name: Setup, Build, Publish, and Deploy.
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- id: "auth"
uses: "google-github-actions/auth@v0"
with:
credentials_json: "${{ secrets.GCLOUD_AUTH }}"
- name: Setup Google Cloud
uses: google-github-actions/setup-gcloud@v1
with:
service_account_key: ${{ secrets.GCLOUD_AUTH }}
project_id: ${{ secrets.PROJECT_ID }}
- name: Configure Docker
run: gcloud auth configure-docker asia-northeast1-docker.pkg.dev
- name: Build
run: docker build --platform linux/amd64 -f Dockerfile.prod -t asia-northeast1-docker.pkg.dev/$PROJECT_ID/$SERVICE_NAME/$IMAGE:$TAG .
- name: Push
run: docker push asia-northeast1-docker.pkg.dev/$PROJECT_ID/$SERVICE_NAME/$IMAGE:$TAG
- name: Deploy
run: gcloud run deploy $SERVICE_NAME --image asia-northeast1-docker.pkg.dev/$PROJECT_ID/$SERVICE_NAME/$IMAGE:$TAG --platform managed --region $REGION --allow-unauthenticated
サービスアカウントの作成
GCPコンソールの「IAMと管理」→「サービスアカウント」でサービスアカウントを作成します。
作成したサービスアカウントへ必要なロールを追加します。
以下のようなロール設定です。
次にサービスアカウントの「キー」タブへ行き、「鍵の追加」の「新しい鍵を作成」で秘密鍵を作成します。
作成するとjson形式のファイルがダウンロードできますので、中身をコピーしておきます。
GitHubの設定
GitHubのプロジェクトリポジトリへ行き、「Settings」→「Secrets and variables」→「Actions」の「New repository secret」で環境変数を作成します。
Nameの方は「GCLOUD_AUTH」で、Secretには先ほどダウンロードしたjson形式の値をペーストします。
YAMLファイル内の「GCP_PROJECT_ID」、「SERVICE_NAME」、「GCP_IMAGE」、「GCP_REGION」などもプロジェクトの環境にあわせて設定します。
変数 | 値の例 |
---|---|
GCP_PROJECT_ID | django-project-1234 |
SERVICE_NAME | django-project |
GCP_IMAGE | my-image |
GCP_REGION | asia-northeast1 |
デプロイの確認
mainブランチをpushしてみて、Cloud runへ自動的にデプロイされていることを確認します。
Discussion