GCP Lifecycle Scripts
Lifecycle scripts are Python files strata runs before or after deploy stages. The
GCloudScript base class gives scripts pre-wired access to the Google Cloud CLI.
Quick start — use a built-in script
lifecycle:
pre_deploy:
scripts:
- strata://gcloud_gke_credentials.py # gcloud container clusters get-credentials
- strata://gcloud_artifact_registry_login.py # gcloud auth configure-docker
pre_provision:
scripts:
- strata://gcloud_gcs_bucket_ensure.py # gcloud storage buckets create (idempotent)
Built-in scripts
gcloud_gke_credentials.py
Runs gcloud container clusters get-credentials before Helm, ArgoCD, or Flux stages.
Required: GKE_CLUSTER + one of GKE_ZONE / GKE_REGION
Variable |
Description |
|---|---|
|
GKE cluster name |
|
Zonal cluster zone (e.g. |
|
Regional cluster region (e.g. |
|
GCP project (auto-resolved from gcloud config) |
|
Override kubeconfig context name |
|
Set to |
gcloud_artifact_registry_login.py
Runs gcloud auth configure-docker to configure Docker credential helpers for
Artifact Registry and/or Container Registry.
Required: GAR_LOCATION (Artifact Registry) or GCR_ENABLE=true (legacy GCR)
Variable |
Description |
|---|---|
|
AR location (e.g. |
|
Set to |
|
GCR host override (default: |
gcloud_gcs_bucket_ensure.py
Runs gcloud storage buckets create --no-fail-on-existing-bucket — idempotent.
Use before Terraform deployments that need a remote state bucket.
Required: GCS_BUCKET
Variable |
Default |
Description |
|---|---|---|
|
— |
Bucket name (without |
|
gcloud config |
GCP project |
|
|
Bucket location |
|
|
Storage class |
|
|
Set to |
|
— |
Comma-separated |
Write a custom script
# .strata/scripts/pre_deploy_custom.py
from strata.utils.gcloud_script_base import GCloudScript
class MyPreDeploy(GCloudScript):
def run(self):
project = self.project() # exits if not set
bucket = self.require_env("GCS_BUCKET")
result = self.run_gcloud([
"storage", "ls", f"gs://{bucket}", "--project", project,
])
self.exit_on_failure(result, "gcloud storage ls")
self.log(f"Bucket '{bucket}' accessible in project '{project}'")
if __name__ == "__main__":
MyPreDeploy().execute()
GCloudScript reference
Method |
Description |
|---|---|
|
Run |
|
|
|
Return env var or |
|
Return env var with default |
|
|
|
Active account from gcloud config |
|
Bearer token from |
|
Path from |
|
Print to stderr — visible in strata console output |