Fixed deployment #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" |