package cloudrun import ( "strings" "alpha.dagger.io/dagger/op" "alpha.dagger.io/gcp" ) // Service deploys a Cloud Run service based on provided GCR image #Service: { // GCP Config config: gcp.#Config // Cloud Run service name name: string @dagger(input) // GCR image ref image: string @dagger(input) // Cloud Run platform platform: *"managed" | string @dagger(input) // Cloud Run service exposed port port: *"80" | string @dagger(input) // Cloud Run service environment variables env: [string]: string _envVars: [ for key, val in env {key + "=" + val}] #up: [ op.#Load & { from: gcp.#GCloud & { "config": config } }, op.#Exec & { args: [ "/bin/bash", "--noprofile", "--norc", "-eo", "pipefail", "-c", #""" gcloud run deploy "$SERVICE_NAME" \ --image "$IMAGE" \ --region "$REGION" \ --port "$PORT" \ --platform "$PLATFORM" \ --allow-unauthenticated \ --set-env-vars "$ENV_VARS" """#, ] env: { SERVICE_NAME: name PLATFORM: platform REGION: config.region IMAGE: image PORT: port ENV_VARS: strings.Join(_envVars, ",") } }, ] }