Skip to content

Commit ac46f95

Browse files
committed
add Cloud Run CI/CD workflow
1 parent e222e35 commit ac46f95

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Deploy to Cloud Run
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
env:
9+
REGION: us-east4
10+
REPO: fastapi-repo
11+
IMAGE: fastapi-app
12+
SERVICE: fastapi-blog
13+
14+
jobs:
15+
deploy:
16+
runs-on: ubuntu-latest
17+
permissions:
18+
contents: read
19+
id-token: write
20+
21+
steps:
22+
- name: Checkout code
23+
uses: actions/checkout@v4
24+
25+
- name: Authenticate to Google Cloud
26+
uses: google-github-actions/auth@v2
27+
with:
28+
workload_identity_provider: projects/508989180395/locations/global/workloadIdentityPools/github-pool/providers/github-provider
29+
service_account: github-actions@fastapi-blog-494112.iam.gserviceaccount.com
30+
31+
- name: Set up Cloud SDK
32+
uses: google-github-actions/setup-gcloud@v2
33+
34+
- name: Configure Docker for Artifact Registry
35+
run: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev --quiet
36+
37+
- name: Build and push Docker image
38+
run: |
39+
IMAGE_URL=${{ env.REGION }}-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/${{ env.REPO }}/${{ env.IMAGE }}:${{ github.sha }}
40+
docker build -t $IMAGE_URL .
41+
docker push $IMAGE_URL
42+
43+
- name: Deploy to Cloud Run
44+
run: |
45+
IMAGE_URL=${{ env.REGION }}-docker.pkg.dev/${{ secrets.GCP_PROJECT_ID }}/${{ env.REPO }}/${{ env.IMAGE }}:${{ github.sha }}
46+
gcloud run deploy ${{ env.SERVICE }} \
47+
--image $IMAGE_URL \
48+
--region ${{ env.REGION }} \
49+
--platform managed \
50+
--allow-unauthenticated \
51+
--set-env-vars="SECRET_KEY=${{ secrets.SECRET_KEY }}" \
52+
--set-env-vars="DATABASE_URL=${{ secrets.DATABASE_URL }}" \
53+
--set-env-vars="S3_BUCKET_NAME=${{ secrets.S3_BUCKET_NAME }}" \
54+
--set-env-vars="S3_REGION=${{ secrets.S3_REGION }}" \
55+
--set-env-vars="S3_ACCESS_KEY_ID=${{ secrets.S3_ACCESS_KEY_ID }}" \
56+
--set-env-vars="S3_SECRET_ACCESS_KEY=${{ secrets.S3_SECRET_ACCESS_KEY }}" \
57+
--set-env-vars="MAIL_SERVER=${{ secrets.MAIL_SERVER }}" \
58+
--set-env-vars="MAIL_PORT=${{ secrets.MAIL_PORT }}" \
59+
--set-env-vars="MAIL_USERNAME=${{ secrets.MAIL_USERNAME }}" \
60+
--set-env-vars="MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }}" \
61+
--set-env-vars="MAIL_FROM=${{ secrets.MAIL_FROM }}" \
62+
--set-env-vars="MAIL_USE_TLS=${{ secrets.MAIL_USE_TLS }}" \
63+
--set-env-vars="FRONTEND_URL=${{ secrets.FRONTEND_URL }}"

0 commit comments

Comments
 (0)