Open7

PRプレビューのための cloud run by CLI

てべすてんてべすてん

deploy

SERVICE_NAME=hoge
SECRET=hoge-secret
REGION=asia-northeast1
gcloud run deploy $SERVICE_NAME \
    --image=asia-northeast1-docker.pkg.dev/$PROJECT_ID/$ARTIFACT_REGISTORY/$SERVICE_NAME:1 \
    --set-secrets=/code/secret/.env=$SERCRET:latest \
    --region=$REGION \
    --allow-unauthenticated \
    --port=80 \
    --project=$PROJECT_ID \
    && gcloud run services update-traffic $SERVICE_NAME --to-latest --region $REGION
てべすてんてべすてん

削除

SERVICE_NAME=hoge
gcloud run services delete $SERVICE_NAME --region asia-northeast1 --quiet
  • --quiet つけないとほんとに消していい?って聞かれる。

てべすてんてべすてん

PRプレビューは

SERVICE_NAME="$SERVICE_NAME-pr-preview-${pr-number}"

になるようにして

  • PR作成時 or 更新時に deploy
  • PR Close時に delete

すればよさそう

てべすてんてべすてん

URLの取得

一覧取得

gcloud run services list

指定したサービス名でフィルタ

SERVICE_NAME=hoge
gcloud run services list --filter "SERVICE:$SERVICE_NAME"

指定したフィールドのみ

以下ではURLのみ取得している。

SERVICE_NAME=hoge
gcloud run services list --filter SERVICE:$SERVICE_NAME --format='value(URL)'  

てべすてんてべすてん

PR作成時

  1. PRプレビューを作成する
PRプレビューの作成
PR_NUMBER=PullRequestのnumber
SERVICE_NAME="xxx-pr-preview$PR_NUMBER"
SECRET=xxx-secret
REGION=asia-northeast1
COMMIT=コミットID
gcloud run deploy $SERVICE_NAME \
    --image=asia-northeast1-docker.pkg.dev/$PROJECT_ID/$ARTIFACT_REGISTORY/$SERVICE_NAME:$COMMIT \
    --set-secrets=/code/secret/.env=$SERCRET:latest \
    --region=$REGION \
    --allow-unauthenticated \
    --port=80 \
    --project=$PROJECT_ID \
    && gcloud run services update-traffic $SERVICE_NAME --to-latest --region $REGION
  1. プレビューURLを出力する
URLの取得
gcloud run services list --filter SERVICE:$SERVICE_NAME --format='value(URL)'

取得したURLをPRにコメントする

  • 適宜Preview環境用の環境変数やシークレットも整える

PRClose時

PRプレビューを削除する

PR_NUMBER=PullRequestのnumber
SERVICE_NAME="xxx-pr-preview$PR_NUMBER"
gcloud run services delete $SERVICE_NAME --region asia-northeast1 --quiet
てべすてんてべすてん

問題はgithub actionsでやるか、cloud buildでやるか。
PR時に...とかPR Close時に...とかはgithub actionsの方がやりやすいが、cloud buildの方がdockerのbuildやpushが楽。

cloudbuld.yamlにon句がかけたらいな。

てべすてんてべすてん

on句書けなそうだな。。

trigger作成画面に見た感じ、PR時はあるがPR Close時はなさそう

Webhookとかうまい感じにやればいいのかもだけど。