9090 --platform managed \
9191 --allow-unauthenticated
9292
93- deploy-cron-job-to-cloud-run :
94- name : Deploy CronJob to Cloud Run
93+ deploy-and-schedule-job :
94+ name : Deploy and Schedule Job
9595 needs : build-and-push
9696 runs-on : ubuntu-latest
9797 environment : GCP-Rozen
@@ -112,18 +112,37 @@ jobs:
112112 - name : Define image tag for deployment
113113 run : echo "TAG=${{ env.PROJECT_REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.ARTIFACT_REGISTRY }}/${{ env.SERVICE_NAME }}:${{ github.sha }}" >> $GITHUB_ENV
114114
115- - name : Deploy Cron Job to Cloud Run
115+ - name : Deploy Cloud Run Job
116116 run : |-
117117 gcloud run jobs deploy ${{ env.JOB_NAME }} \
118118 --image $TAG \
119119 --region ${{ env.PROJECT_REGION }} \
120120 --command=python \
121121 --args=cron.py \
122- --schedule="0 0 * * *" \
123- --time-zone="America/Argentina/Buenos_Aires" \
124122 --service-account ${{ vars.GCP_SA_EMAIL }} \
125123 --set-secrets=TELEGRAM_BOT_TOKEN=${{ vars.GCP_SECRET_TG_BOT_TOKEN }}:latest \
126124 --set-secrets=DB_USER=${{ vars.GCP_SECRET_DB_USER }}:latest \
127125 --set-secrets=DB_PASSWORD=${{ vars.GCP_SECRET_DB_PASSWORD }}:latest \
128126 --set-secrets=DB_URL=${{ vars.GCP_SECRET_DB_URL }}:latest \
129127 --set-env-vars=DB_PORT=${{ vars.GCP_DB_PORT }}
128+
129+ - name : Create or Update Cloud Scheduler Job
130+ run : |
131+ if gcloud scheduler jobs describe ${{ env.JOB_NAME }} --location=${{ env.PROJECT_REGION }} >/dev/null 2>&1; then
132+ echo "Updating existing Cloud Scheduler job"
133+ gcloud scheduler jobs update http ${{ env.JOB_NAME }} \
134+ --location=${{ env.PROJECT_REGION }} \
135+ --schedule="0 0 * * *" \
136+ --uri="https://${{ env.PROJECT_REGION }}-run.googleapis.com/v1/projects/${{ env.PROJECT_ID }}/locations/${{ env.PROJECT_REGION }}/jobs/${{ env.JOB_NAME }}:run" \
137+ --http-method=POST \
138+ --oidc-service-account-email=${{ vars.GCP_SA_EMAIL }}
139+ else
140+ echo "Creating new Cloud Scheduler job"
141+ gcloud scheduler jobs create http ${{ env.JOB_NAME }} \
142+ --location=${{ env.PROJECT_REGION }} \
143+ --schedule="0 0 * * *" \
144+ --time-zone="America/Argentina/Buenos_Aires" \
145+ --uri="https://${{ env.PROJECT_REGION }}-run.googleapis.com/v1/projects/${{ env.PROJECT_ID }}/locations/${{ env.PROJECT_REGION }}/jobs/${{ env.JOB_NAME }}:run" \
146+ --http-method=POST \
147+ --oidc-service-account-email=${{ vars.GCP_SA_EMAIL }}
148+ fi
0 commit comments