Loading...
Loading...
Automates declarative resource creation and provisioning for data pipelines, supporting BigQuery, Dataform, Dataproc, BigQuery Data Transfer Service (DTS), and other resources. It manages environment-specific configurations (dev, staging, prod) through a deployment.yaml file. Use when: - Modifying or creating deployment.yaml for deployment settings. - Resolving environment-specific variables (e.g., Project IDs, Regions) for deployment. - Provisioning supported infrastructure like BigQuery datasets/tables, Dataform resources, or DTS resources via deployment.yaml. Do not use when: - Resources already exist. - Managing resources not supported by `gcloud beta orchestration-pipelines resource-types list`. - Managing general cloud infrastructure (VMs, networks, Kubernetes, IAM policies), which are better suited for Terraform. - Infrastructure spans multiple cloud providers (AWS, Azure, etc.). - Already uses Terraform for the target resources.
npx skill4agent add gemini-cli-extensions/data-agent-kit-starter-pack gcp-pipeline-resource-provisioningdeployment.yaml[!IMPORTANT] Whenever you generate resource definitions in, you MUST directly populate thedeployment.yamllabel underdatacloudfor every resource to track the source of creation. Determine the value based on your current IDE environment:definition.labels
- For Antigravity, set
datacloud: "antigravity"- For VS Code, set
datacloud: "vscode"- For any other environment, set
datacloud: "other"Do not use a variable substitution for this label; hardcode the appropriate string value directly into each resource definition (e.g., replacingplaceholders).__REQUIRED_LABEL__Special rule for BigQuery DTS Ingestion: Whenever you generate ainbigquerydatatransfer.transferConfig, you MUST also explicitly define its target destinationdeployment.yamlin the same file and apply thebigquery.datasetlabel to it. You must do this even if the dataset already exists, to ensure the destination dataset's labels are patched and updated.datacloud
gcloud beta orchestration-pipelines resource-types listdeployment.yaml[!TIP] Ifalready exists in the repository root, prioritize extractingdeployment.yamlandprojectfrom the target environment configuration (e.g.,region).dev
gcloud config get projectgcloud projects describe $(gcloud config get project) --format="value(projectNumber)"gcloud config get-value compute/regiongit rev-parse HEAD[!TIP]Use these commands to replace placeholders likewith actual values. Always remove associated comments that start with TODO once replaced.YOUR_PROJECT_ID
deployment.yaml[!TIP]Use the Reference Spec: The agent can use thefile as a template. It includes sample definitions for select supported resource types. Copy and adapt the required resource blocks into thereferences/gcp_pipeline_resource_provisioning_spec.md. Usedeployment.yamlwhen needed.gcloud beta orchestration-pipelines resource-types list
[!IMPORTANT]Handling Secrets & Privacy (CRITICAL): NEVER hardcode plain-text secrets in.deployment.yaml
- Sensitive Data (Secrets): Sensitive information such as passwords, API keys, and other sensitive information MUST be stored in Secret Manager and declared in the
block ofsecrets:.deployment.yaml- Non-Sensitive Data (Variables): General configuration (e.g., dataset names, table IDs, regions) could be declared in the
block.variables:- Substitution via
: Both{{ VAR }}andvariables:MUST be used assecrets:substitutions in resource definitions.{{ VARIABLE_NAME }}- No Creation: The agent MUST NOT use the framework to create new secrets. If
indicates the secret does not exist, the agent MUST ask the user to create it manually and then re-verify.gcloud- Reference Only Policy: The agent's role is strictly limited to referencing existing secrets. The agent MUST NEVER read, print, or inspect the values of secrets.
- Safe Deployment: The actual value injection happens during deployment execution. The agent only provides the reference.
- Manual Secret Management: Advise the user to manage secret payloads and versions manually.
deployment.yamlgcloud beta orchestration-pipelines validate --environment=<ENV_NAME>gcloud beta orchestration-pipelines deploy --environment=<ENV_NAME> --local[!NOTE] If a new transfer is being created, make sure to NOT remove the DTS transfer resource fromafter it completes the run.deployment.yaml
deployment.yaml