# CI/CD pipeline: build container images, push to Artifact Registry, deploy to Cloud Run. # Trigger this on push to `main` via a Cloud Build GitHub trigger. # # gcloud builds triggers create github \ # --repo-name=production-rag-langgraph --repo-owner=YOUR_ORG \ # --branch-pattern="^main$" --build-config=cloudbuild.yaml substitutions: _REGION: us-central1 _REPO: rag-repo _API_SERVICE: rag-api _FRONTEND_SERVICE: rag-frontend steps: # --- Build images --- - name: "gcr.io/cloud-builders/docker" args: - build - "-f" - Dockerfile.api - "-t" - "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-api:$SHORT_SHA" - "." id: build-api - name: "gcr.io/cloud-builders/docker" args: - build - "-f" - Dockerfile.frontend - "-t" - "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-frontend:$SHORT_SHA" - "." id: build-frontend # --- Push images --- - name: "gcr.io/cloud-builders/docker" args: ["push", "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-api:$SHORT_SHA"] id: push-api - name: "gcr.io/cloud-builders/docker" args: ["push", "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-frontend:$SHORT_SHA"] id: push-frontend # --- Deploy to Cloud Run --- - name: "gcr.io/google.com/cloudsdktool/cloud-sdk" entrypoint: gcloud args: - run - deploy - "${_API_SERVICE}" - "--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-api:$SHORT_SHA" - "--region=${_REGION}" - "--platform=managed" - "--allow-unauthenticated" id: deploy-api - name: "gcr.io/google.com/cloudsdktool/cloud-sdk" entrypoint: gcloud args: - run - deploy - "${_FRONTEND_SERVICE}" - "--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-frontend:$SHORT_SHA" - "--region=${_REGION}" - "--platform=managed" - "--allow-unauthenticated" id: deploy-frontend images: - "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-api:$SHORT_SHA" - "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/rag-frontend:$SHORT_SHA" options: logging: CLOUD_LOGGING_ONLY