feat: add cloudbuild.yaml for CI/CD auto-deploy on push to main

This commit is contained in:
chrischristiansen-glitch 2026-05-23 21:29:58 +02:00
parent ffe4ec1c63
commit 14910e2fa2

View File

@ -1,71 +1,52 @@
# cloudbuild.yaml — Cloud Build CI/CD pipeline for OSVauco ADK agent # cloudbuild.yaml — Auto-build and deploy osvauco-agent on push to main
# Triggered on push to main branch
# Stages: install + test → eval gate → build image → push → deploy to Cloud Run
substitutions:
_PROJECT_ID: propane-will-491900-m5
_REGION: us-central1
_SERVICE_NAME: oavauco-agent-v1
_AR_REPO: oavauco-docker
_IMAGE: ${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_AR_REPO}/oavauco-agent:${SHORT_SHA}
steps: steps:
- name: 'python:3.12-slim' # Step 1: Build Docker image
id: 'install-and-test'
entrypoint: bash
args:
- '-c'
- |
pip install -r agents/core-logic/requirements.txt --quiet
if [ -d "agents/tests/unit" ]; then
python -m pytest agents/tests/unit/ -v
fi
echo "Install + tests complete."
- name: 'python:3.12-slim'
id: 'eval-gate'
entrypoint: bash
env:
- 'GOOGLE_CLOUD_PROJECT=${_PROJECT_ID}'
- 'GOOGLE_CLOUD_LOCATION=${_REGION}'
- 'GOOGLE_GENAI_USE_VERTEXAI=True'
args:
- '-c'
- |
pip install google-cloud-aiplatform[evaluation] --quiet
python agents/eval/run_eval.py
- name: 'gcr.io/cloud-builders/docker' - name: 'gcr.io/cloud-builders/docker'
id: 'build-image'
args: args:
- 'build' - 'build'
- '-t' - '-t'
- '${_IMAGE}' - '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:$COMMIT_SHA'
- '-f' - '-t'
- 'agents/core-logic/Dockerfile' - '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:latest'
- 'agents/core-logic' - 'agents/core-logic'
# Step 2: Push image
- name: 'gcr.io/cloud-builders/docker' - name: 'gcr.io/cloud-builders/docker'
id: 'push-image' args:
args: ['push', '${_IMAGE}'] - 'push'
- '--all-tags'
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent'
- name: 'gcr.io/cloud-builders/gcloud' # Step 3: Deploy to Cloud Run
id: 'deploy-cloud-run' - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args: args:
- 'run' - 'run'
- 'deploy' - 'deploy'
- '${_SERVICE_NAME}' - '${_CLOUD_RUN_SERVICE}'
- '--image=${_IMAGE}' - '--image=${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:$COMMIT_SHA'
- '--region=${_REGION}' - '--region=${_REGION}'
- '--project=${_PROJECT_ID}' - '--project=${PROJECT_ID}'
- '--service-account=vertex-agent-sa@${_PROJECT_ID}.iam.gserviceaccount.com' - '--service-account=${_AGENT_SA}'
- '--set-env-vars=GOOGLE_CLOUD_PROJECT=${PROJECT_ID},GOOGLE_CLOUD_LOCATION=${_REGION},GOOGLE_GENAI_USE_VERTEXAI=True'
- '--no-allow-unauthenticated' - '--no-allow-unauthenticated'
- '--port=8080'
- '--memory=1Gi'
- '--cpu=1'
- '--min-instances=0' - '--min-instances=0'
- '--platform=managed' - '--max-instances=3'
- '--quiet' - '--quiet'
images: substitutions:
- '${_IMAGE}' _REGION: us-central1
_ARTIFACT_REPO: osvauco-repo
_CLOUD_RUN_SERVICE: osvauco-agent
_AGENT_SA: osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com
options: options:
logging: CLOUD_LOGGING_ONLY logging: CLOUD_LOGGING_ONLY
machineType: E2_HIGHCPU_8
images:
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:$COMMIT_SHA'
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:latest'