gcp-deploy

📁 fwfutures/skills 📅 1 day ago
8
总安装量
8
周安装量
#35251
全站排名
安装命令
npx skills add https://github.com/fwfutures/skills --skill gcp-deploy

Agent 安装分布

openclaw 8
gemini-cli 8
github-copilot 8
codex 8
kimi-cli 8
cursor 8

Skill 文档

GCP Cloud Run Deploy

Deploy from source to Cloud Run in a single command. Requires: a GCP project, a Dockerfile in the repo root, and an app that listens on a port (default 8080 / PORT env var).

Quick Deploy

# 1. Auth (skip if already logged in)
gcloud auth login
gcloud config set project PROJECT_ID

# 2. Enable APIs (first time only)
gcloud services enable run.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com

# 3. Deploy
gcloud run deploy SERVICE_NAME \
  --source . \
  --region australia-southeast1 \
  --allow-unauthenticated

This builds the container remotely via Cloud Build, pushes to Artifact Registry, deploys to Cloud Run, and returns a public HTTPS URL. Redeploy by re-running the same command.

Deploy Script

Copy scripts/deploy.sh into the project root for one-command deploys:

chmod +x deploy.sh
./deploy.sh my-service

Env vars: GCP_REGION (default australia-southeast1), GCP_PROJECT (default: current gcloud project).

Common Flags

Flag Purpose Example
--region Deployment region australia-southeast1
--allow-unauthenticated Public access
--port Container port (if not 8080) --port 3000
--set-env-vars Env vars --set-env-vars KEY=val,FOO=bar
--set-secrets Secret Manager secrets --set-secrets ENV=SECRET:latest
--memory Memory --memory 512Mi
--cpu CPU --cpu 1
--min-instances Min instances (0 = scale to zero) --min-instances 0
--max-instances Max instances --max-instances 3
--timeout Request timeout (max 3600) --timeout 300

Environment Variables and Secrets

Inline env vars:

gcloud run deploy SERVICE --source . --region REGION --allow-unauthenticated \
  --set-env-vars "DATABASE_URL=postgres://...,API_KEY=abc123"

Secret Manager (recommended for sensitive values):

# Create secret
echo -n "secret-value" | gcloud secrets create MY_SECRET --data-file=-

# Grant access to default compute SA
gcloud secrets add-iam-policy-binding MY_SECRET \
  --member="serviceAccount:$(gcloud iam service-accounts list --format='value(email)' --filter='displayName:Compute Engine default')" \
  --role="roles/secretmanager.secretAccessor"

# Deploy with secret
gcloud run deploy SERVICE --source . --region REGION --allow-unauthenticated \
  --set-secrets "MY_SECRET=MY_SECRET:latest"

Useful Commands

# Stream logs
gcloud run services logs tail SERVICE --region REGION

# List services
gcloud run services list --region REGION

# Get service URL
gcloud run services describe SERVICE --region REGION --format "value(status.url)"

# Delete service
gcloud run services delete SERVICE --region REGION

CI/Headless Auth

gcloud auth activate-service-account --key-file=key.json
gcloud config set project PROJECT_ID

Troubleshooting

Issue Fix
Build fails Check Dockerfile locally: docker build .
403 on deploy Need roles/run.admin and roles/cloudbuild.builds.editor
App crashes on start Check logs: gcloud run services logs tail SERVICE --region REGION
Port mismatch Set --port to match app, or have app read PORT env var
Cold start slow Set --min-instances 1 (stays warm, costs more)
Timeout on long requests Increase with --timeout 300 (max 3600s)