Skip to content

Fixed deployment

Fixed deployment #4

Workflow file for this run

name: Deploy Gradescope Sync Job
on:
push:
branches:
- gradesync-ci/cd-(new-branch)
env:
IMAGE_NAME: cs10-sp25-test
JOB_NAME: cs10-sp25-test
SCHEDULE_NAME: GradeScope Integration Update
CRON_SCHEDULE: '0 */2 * * *' # Runs every 2 hours
PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
REGION: ${{ secrets.GCP_REGION }}
REPO_NAME: ${{ secrets.ARTIFACT_REPO }}
SERVICE_ACCOUNT_EMAIL: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
jobs:
deploy:
name: Deploy Cloud Run Job
runs-on: ubuntu-latest
permissions:
contents: 'read'
id-token: 'write'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Authenticate to GCP
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_KEY_JSON }}
- name: Configure Docker for the Artifact Registry
run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev --quiet
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image with Buildx
run: |
docker buildx build \
--builder default \
--platform linux/amd64 \
--tag ${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}:latest \
--load \
.
- name: Push Docker image to Artifact Registry
run: |
docker push ${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}:latest
- name: Deploy Cloud Run Job
run: |
gcloud run jobs describe ${{ env.JOB_NAME }} --region=${{ env.REGION }} \
&& gcloud run jobs update ${{ env.JOB_NAME }} \
--image=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}:latest \
--region=${{ env.REGION }} \
--set-env-vars=GOOGLE_PROJECT=${{ env.PROJECT_ID }} \
|| gcloud run jobs create ${{ env.JOB_NAME }} \
--image=${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}:latest \
--region=${{ env.REGION }} \
--set-env-vars=GOOGLE_PROJECT=${{ env.PROJECT_ID }} \
--execute-now
- name: Create/update Cloud Scheduler job
run: |
gcloud scheduler jobs describe ${{ env.SCHEDULE_NAME }} --location=${{ env.REGION }} \
&& gcloud scheduler jobs update http ${{ env.SCHEDULE_NAME }} \
--location=${{ env.REGION }} \
--schedule="${{ env.CRON_SCHEDULE }}" \
--uri="https://${{ env.REGION }}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${{ env.PROJECT_ID }}/jobs/${{ env.JOB_NAME }}:run" \
--http-method=POST \
--oauth-service-account-email=${{ env.SERVICE_ACCOUNT_EMAIL }} \
--time-zone="America/Los_Angeles" \
|| gcloud scheduler jobs create http ${{ env.SCHEDULE_NAME }} \
--location=${{ env.REGION }} \
--schedule="${{ env.CRON_SCHEDULE }}" \
--uri="https://${{ env.REGION }}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${{ env.PROJECT_ID }}/jobs/${{ env.JOB_NAME }}:run" \
--http-method=POST \
--oauth-service-account-email=${{ env.SERVICE_ACCOUNT_EMAIL }} \
--time-zone="America/Los_Angeles"