From 14910e2fa2380ae2a3c4f50aa92aaad7f02b2aef Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Sat, 23 May 2026 21:29:58 +0200 Subject: [PATCH] feat: add cloudbuild.yaml for CI/CD auto-deploy on push to main --- cloudbuild.yaml | 83 +++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 51 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 4892718..19494cb 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -1,71 +1,52 @@ -# cloudbuild.yaml — Cloud Build CI/CD pipeline for OSVauco ADK agent -# 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} - +# cloudbuild.yaml — Auto-build and deploy osvauco-agent on push to main steps: - - name: 'python:3.12-slim' - 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 - + # Step 1: Build Docker image - name: 'gcr.io/cloud-builders/docker' - id: 'build-image' args: - 'build' - '-t' - - '${_IMAGE}' - - '-f' - - 'agents/core-logic/Dockerfile' + - '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:$COMMIT_SHA' + - '-t' + - '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:latest' - 'agents/core-logic' + # Step 2: Push image - name: 'gcr.io/cloud-builders/docker' - id: 'push-image' - args: ['push', '${_IMAGE}'] + args: + - 'push' + - '--all-tags' + - '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent' - - name: 'gcr.io/cloud-builders/gcloud' - id: 'deploy-cloud-run' + # Step 3: Deploy to Cloud Run + - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' + entrypoint: gcloud args: - 'run' - 'deploy' - - '${_SERVICE_NAME}' - - '--image=${_IMAGE}' + - '${_CLOUD_RUN_SERVICE}' + - '--image=${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:$COMMIT_SHA' - '--region=${_REGION}' - - '--project=${_PROJECT_ID}' - - '--service-account=vertex-agent-sa@${_PROJECT_ID}.iam.gserviceaccount.com' + - '--project=${PROJECT_ID}' + - '--service-account=${_AGENT_SA}' + - '--set-env-vars=GOOGLE_CLOUD_PROJECT=${PROJECT_ID},GOOGLE_CLOUD_LOCATION=${_REGION},GOOGLE_GENAI_USE_VERTEXAI=True' - '--no-allow-unauthenticated' + - '--port=8080' + - '--memory=1Gi' + - '--cpu=1' - '--min-instances=0' - - '--platform=managed' + - '--max-instances=3' - '--quiet' -images: - - '${_IMAGE}' +substitutions: + _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: 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'