forked from martin226/slideitin
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcloudbuild.yaml
More file actions
110 lines (100 loc) Β· 3.72 KB
/
cloudbuild.yaml
File metadata and controls
110 lines (100 loc) Β· 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
steps:
# Build the slides service image
- name: 'gcr.io/cloud-builders/docker'
id: 'build-slides-service'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/slideitin-slides-service', './backend/slides-service/']
# Push the slides service image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
id: 'push-slides-service'
args: ['push', 'gcr.io/$PROJECT_ID/slideitin-slides-service']
waitFor: ['build-slides-service']
# Deploy slides service to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
id: 'deploy-slides-service'
entrypoint: 'gcloud'
args:
- 'run'
- 'deploy'
- 'slideitin-slides-service'
- '--image=gcr.io/$PROJECT_ID/slideitin-slides-service'
- '--region=us-central1'
- '--platform=managed'
- '--concurrency=1'
- '--memory=4Gi'
- '--set-secrets=GEMINI_API_KEY=gemini-api-key:latest'
- '--set-env-vars=GOOGLE_CLOUD_PROJECT=$PROJECT_ID'
- '--set-env-vars=GCS_BUCKET_NAME=slideitin-files'
- '--ingress=internal'
- '--no-allow-unauthenticated'
waitFor: ['push-slides-service']
# Build the backend image
- name: 'gcr.io/cloud-builders/docker'
id: 'build-backend'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/slideitin-backend', './backend/api/']
# Push the backend image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
id: 'push-backend'
args: ['push', 'gcr.io/$PROJECT_ID/slideitin-backend']
waitFor: ['build-backend']
# Deploy backend to Cloud Run with secrets
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
id: 'deploy-backend'
entrypoint: 'gcloud'
args:
- 'run'
- 'deploy'
- 'slideitin-backend'
- '--image=gcr.io/$PROJECT_ID/slideitin-backend'
- '--region=us-central1'
- '--platform=managed'
- '--allow-unauthenticated'
- '--cpu=1000m'
- '--memory=512Mi'
- '--ingress=internal-and-cloud-load-balancing'
- '--set-env-vars=GOOGLE_CLOUD_PROJECT=$PROJECT_ID'
- '--set-env-vars=FRONTEND_URL=https://justslideitin.com'
- '--set-env-vars=CLOUD_TASKS_REGION=us-central1'
- '--set-env-vars=CLOUD_TASKS_QUEUE_ID=slides-generation-queue'
- '--set-env-vars=SLIDES_SERVICE_URL=https://slideitin-slides-service-390904697534.us-central1.run.app'
- '--set-env-vars=GCS_BUCKET_NAME=slideitin-files'
waitFor: ['push-backend', 'deploy-slides-service']
# Build the frontend image
- name: 'gcr.io/cloud-builders/docker'
id: 'build-frontend'
args:
- 'build'
- '-t'
- 'gcr.io/$PROJECT_ID/slideitin-frontend'
- '--build-arg'
- 'NEXT_PUBLIC_API_URL=https://justslideitin.com/v1'
- './frontend/'
# Push the frontend image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
id: 'push-frontend'
args: ['push', 'gcr.io/$PROJECT_ID/slideitin-frontend']
waitFor: ['build-frontend']
# Deploy frontend to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
id: 'deploy-frontend'
entrypoint: 'gcloud'
args:
- 'run'
- 'deploy'
- 'slideitin-frontend'
- '--image=gcr.io/$PROJECT_ID/slideitin-frontend'
- '--region=us-central1'
- '--platform=managed'
- '--allow-unauthenticated'
- '--cpu=1000m'
- '--memory=512Mi'
- '--ingress=internal-and-cloud-load-balancing'
- '--set-env-vars=NEXT_PUBLIC_API_URL=https://justslideitin.com/v1'
- '--set-env-vars=NEXT_PUBLIC_URL=https://justslideitin.com'
waitFor: ['push-frontend']
# Images to be stored in Container Registry
images:
- 'gcr.io/$PROJECT_ID/slideitin-backend'
- 'gcr.io/$PROJECT_ID/slideitin-slides-service'
- 'gcr.io/$PROJECT_ID/slideitin-frontend'
# Set timeout to 30 minutes
timeout: '1800s'