name: Deploy to Cloud Run
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
env:
PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
REGION: ${{ secrets.CLOUD_RUN_REGION }}
SERVICE: ${{ secrets.CLOUD_RUN_SERVICE }}
GAR_LOCATION: ${{ secrets.GAR_LOCATION }} # e.g. us-central1
GAR_REPO: ${{ secrets.GAR_REPO }} # e.g. olexi
IMAGE: ${{ secrets.GAR_LOCATION }}-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/${{ secrets.GAR_REPO }}/olexi-mcp:${{ github.sha }}
steps:
- uses: actions/checkout@v4
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v2
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Configure Docker auth for Artifact Registry
run: gcloud auth configure-docker $GAR_LOCATION-docker.pkg.dev -q
- name: Build and push image
run: |
docker build -t "$IMAGE" .
docker push "$IMAGE"
- name: Deploy to Cloud Run
run: |
gcloud run deploy "$SERVICE" \
--image "$IMAGE" \
--region "$REGION" \
--platform managed \
--allow-unauthenticated \
--port 3000 \
--timeout 600 \
--cpu 1 \
--memory 512Mi \
--min-instances 0 \
--max-instances 3 \
--set-env-vars "AUSTLII_POLL_INTERVAL=120,AUSTLII_HEALTH_TIMEOUT=6,AUSTLII_TIMEOUT=8,AUSTLII_RETRIES=2,AUSTLII_BACKOFF=0.5"