Context
Deploying {{project_name}} ({{project_type}}) to Google Cloud Platform (GCP). You will follow a strict 6-phase Deployment Lifecycle Contract.
Instructions
Execute the following phases in order:
Phase 1: Authentication
- Ensure the
GOOGLE_APPLICATION_CREDENTIALSenvironment variable is set to a valid service account key JSON file, or configure Workload Identity Federation (if inside CI/CD). - Authenticate the gcloud CLI:
gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS. - Set the default project:
gcloud config set project <PROJECT_ID>.
Phase 2: Build
- Prepare the artifacts for deployment.
- If Cloud Run or GKE: build your Docker image (e.g.,
docker build -t gcr.io/<PROJECT_ID>/<APP_NAME> .orgcloud builds submit --tag gcr.io/<PROJECT_ID>/<APP_NAME>). - If App Engine: prepare
app.yaml. - If Static Site (Cloud Storage): run
npm run build.
Phase 3: Install / Provisioning
- Ensure the target GCP resources (Cloud Run services, Buckets, Compute Instances) exist and you have permissions to write to them.
- If Cloud Storage:
gsutil ls gs://<bucket-name>. - Enable necessary APIs (e.g.,
gcloud services enable run.googleapis.comif using Cloud Run).
Phase 4: Deploy
- Ship the artifact to GCP.
- Cloud Run:
gcloud run deploy <SERVICE_NAME> --image gcr.io/<PROJECT_ID>/<APP_NAME> --region <REGION> --platform managed. - App Engine:
gcloud app deploy. - Cloud Storage:
gsutil rsync -R dist/ gs://<bucket-name>.
Phase 5: Checking
- Verify the deployment was successful.
- Cloud Run: Check the returned service URL via
curland inspectgcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=<SERVICE_NAME>"if it fails. - App Engine: Check the target URL.
- Ensure the service returns HTTP 200.
Phase 6: Update / Rollback
- If Phase 5 fails, immediately initiate a rollback.
- Cloud Run: Route 100% of traffic to the previous revision (
gcloud run services update-traffic <SERVICE_NAME> --to-revisions=<PREVIOUS_REVISION_NAME>=100 --region <REGION>). - App Engine: Roll back traffic to an older version via
gcloud app services set-traffic. - Note the failure in the progress log.
Validation
- GCP authentication succeeds.
- Build succeeds.
- Artifacts are deployed.
- Health check (curl) returns 200 OK.