production-rag-api / cloudbuild.yaml
akif07's picture
Clean initial commit without database or cache files
a7cba55
Raw
History Blame Contribute Delete
2.18 kB
# 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