# @nx-extend/gcp-cloud-run @nx-extend/gcp-cloud-run NPM package **Nx plugin to deploy your app to [Cloud Run](https://cloud.google.com/run)**. ## Features - Deploy containerized applications to Google Cloud Run - Automatic container builds via Cloud Build or Artifact Registry - Configurable scaling and resource limits - Environment variable and secret management - Cloud SQL instance connectivity - Version tagging and traffic management ## Setup ### Install ```sh npm install -D @nx-extend/gcp-cloud-run ``` ## Usage ### Deploy Deploy your application to Cloud Run: ```sh nx deploy ``` #### Available Options | Name | Type | Default | Description | |------------------------------|-------------------------|---------------------|-------------------------------------------------------------------------| | **`region`** | `string` | - | Region to deploy Cloud Run revision to | | **`project`** | `string` | - | GCP project to deploy Cloud Run revision to | | **`name`** | `string` | `project name` | Name of the Cloud Run revision | | **`concurrency`** | `number` | `250` | Maximum number of concurrent requests allowed per container instance | | **`maxInstances`** | `number` | `10` | Maximum number of container instances to run | | **`minInstances`** | `number` | `0` | Minimum number of container instances to run | | **`allowUnauthenticated`** | `boolean` | `true` | Whether to allow unauthenticated requests to Cloud Run service | | **`envVars`** | `{[k: string]: string}` | - | Environment variables to load into Cloud Run instance's environment | | **`secrets`** | `string[]` | - | Secrets to load into Cloud Run instance's environment | | **`memory`** | `string` | `128Mi` | Amount of memory to reserve for Cloud Run instance | | **`cloudSqlInstance`** | `string` | - | Name of the Cloud SQL instance to connect to Run instance | | **`http2`** | `boolean` | `false` | Whether to enforce Run instance to use HTTP/2 for end-to-end connections| | **`serviceAccount`** | `string` | - | Service account email of another identity (if not using default) | | **`buildWith`** | `string` | `artifact-registry` | Only accepts `artifact-registry`. If provided, deploy runs with `--source` set to app's directory. If not provided, submits build to Cloud Build sourcing app's dist directory, then deploys using `--image` with the built image location | | **`logsDir`** | `string` | - | Note: only relevant if not specifying `--buildWith`. Directory in GCS where to hold Cloud Build's build logs | | **`tagWithVersion`** | `string` | - | Whether to tag Run service with a version (sources version from package.json) | | **`noTraffic`** | `boolean` | `false` | Set to true to ensure Cloud Run avoids sending traffic to the revision being deployed | | **`revisionSuffix`** | `boolean` | `false` | Set to append to deployed revision's name | | **`timeout`** | `number` | - | Set the maximum request execution time | | **`cpu`** | `number` | - | Set a CPU limit in Kubernetes CPU units | | **`cpuBoost`** | `boolean` | - | Whether to allocate extra CPU to containers on startup to reduce cold start latency | | **`ingress`** | `string` | - | Set the ingress traffic sources allowed to call the service | ## Examples ### Basic Deployment ```json { "deploy": { "executor": "@nx-extend/gcp-cloud-run:deploy", "options": { "region": "us-central1", "project": "my-gcp-project", "name": "my-app", "memory": "512Mi", "maxInstances": 5 } } } ``` ### Deployment with Environment Variables and Secrets ```json { "deploy": { "executor": "@nx-extend/gcp-cloud-run:deploy", "options": { "region": "us-central1", "project": "my-gcp-project", "envVars": { "NODE_ENV": "production", "API_URL": "https://api.example.com" }, "secrets": [ "DATABASE_PASSWORD:latest", "API_KEY:latest" ] } } } ```