-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcloudbuild.yaml
More file actions
121 lines (113 loc) · 5.28 KB
/
cloudbuild.yaml
File metadata and controls
121 lines (113 loc) · 5.28 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
111
112
113
114
115
116
117
118
119
120
121
options:
logging: CLOUD_LOGGING_ONLY
machineType: "E2_HIGHCPU_32"
diskSizeGb: 100
substitutions:
_AR_IMAGE: us-central1-docker.pkg.dev/ontology-41607/ontology-repo/ontology
steps:
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: bash
args:
- "-c"
- |
gsutil cp gs://${_NEXT_PUBLIC_PROJECT_ID}_cloudbuild/next-cache.tar.gz next-cache.tar.gz || echo "No cache found in GCS"
tar -zxf next-cache.tar.gz || echo "No tar to extract"
mkdir -p .next-cache # Ensures the directory exists so Docker doesn't fail
- name: "gcr.io/cloud-builders/docker"
entrypoint: "bash"
args:
- "-c"
- |
docker build -t ${_AR_IMAGE} \
--cache-from ${_AR_IMAGE} \
--build-arg=NEXT_PUBLIC_API_KEY="$${NEXT_PUBLIC_API_KEY}" \
--build-arg=NEXT_PUBLIC_AUTH_DOMAIN="$${NEXT_PUBLIC_AUTH_DOMAIN}" \
--build-arg=NEXT_PUBLIC_PROJECT_ID="$${NEXT_PUBLIC_PROJECT_ID}" \
--build-arg=NEXT_PUBLIC_STORAGE_BUCKET="$${NEXT_PUBLIC_STORAGE_BUCKET}" \
--build-arg=NEXT_PUBLIC_MESSAGING_SENDER_ID="$${NEXT_PUBLIC_MESSAGING_SENDER_ID}" \
--build-arg=NEXT_PUBLIC_APP_ID="$${NEXT_PUBLIC_APP_ID}" \
--build-arg=NEXT_PUBLIC_DATABASE_URL="$${NEXT_PUBLIC_DATABASE_URL}" \
--build-arg=NEXT_PUBLIC_DEV_API_KEY="$${NEXT_PUBLIC_DEV_API_KEY}" \
--build-arg=NEXT_PUBLIC_DEV_AUTH_DOMAIN="$${NEXT_PUBLIC_DEV_AUTH_DOMAIN}" \
--build-arg=NEXT_PUBLIC_DEV_PROJECT_ID="$${NEXT_PUBLIC_DEV_PROJECT_ID}" \
--build-arg=NEXT_PUBLIC_DEV_STORAGE_BUCKET="$${NEXT_PUBLIC_DEV_STORAGE_BUCKET}" \
--build-arg=NEXT_PUBLIC_DEV_MESSAGING_SENDER_ID="$${NEXT_PUBLIC_DEV_MESSAGING_SENDER_ID}" \
--build-arg=NEXT_PUBLIC_DEV_APP_ID="$${NEXT_PUBLIC_DEV_APP_ID}" \
--build-arg=NEXT_PUBLIC_WS_SERVER="$${NEXT_PUBLIC_WS_SERVER}" \
--build-arg=BUILDKIT_INLINE_CACHE=1 \
.
env:
- "DOCKER_BUILDKIT=1"
- "NEXT_PUBLIC_API_KEY=${_NEXT_PUBLIC_API_KEY}"
- "NEXT_PUBLIC_AUTH_DOMAIN=${_NEXT_PUBLIC_AUTH_DOMAIN}"
- "NEXT_PUBLIC_PROJECT_ID=${_NEXT_PUBLIC_PROJECT_ID}"
- "NEXT_PUBLIC_STORAGE_BUCKET=${_NEXT_PUBLIC_STORAGE_BUCKET}"
- "NEXT_PUBLIC_MESSAGING_SENDER_ID=${_NEXT_PUBLIC_MESSAGING_SENDER_ID}"
- "NEXT_PUBLIC_APP_ID=${_NEXT_PUBLIC_APP_ID}"
- "NEXT_PUBLIC_DATABASE_URL=${_NEXT_PUBLIC_DATABASE_URL}"
- "NEXT_PUBLIC_DEV_API_KEY=${_NEXT_PUBLIC_DEV_API_KEY}"
- "NEXT_PUBLIC_DEV_AUTH_DOMAIN=${_NEXT_PUBLIC_DEV_AUTH_DOMAIN}"
- "NEXT_PUBLIC_DEV_PROJECT_ID=${_NEXT_PUBLIC_DEV_PROJECT_ID}"
- "NEXT_PUBLIC_DEV_STORAGE_BUCKET=${_NEXT_PUBLIC_DEV_STORAGE_BUCKET}"
- "NEXT_PUBLIC_DEV_MESSAGING_SENDER_ID=${_NEXT_PUBLIC_DEV_MESSAGING_SENDER_ID}"
- "NEXT_PUBLIC_DEV_APP_ID=${_NEXT_PUBLIC_DEV_APP_ID}"
- "NEXT_PUBLIC_WS_SERVER=${_NEXT_PUBLIC_WS_SERVER}"
- name: "gcr.io/cloud-builders/docker"
entrypoint: "bash"
args:
- "-c"
- |
# Create a temporary container from the new image to extract files
docker create --name temp-container ${_AR_IMAGE}
# Copy the newly generated Next.js cache out to the Cloud Build workspace
docker cp temp-container:/app/.next/cache ./.next-cache || echo "Cache extraction failed"
docker rm temp-container
# Compress the cache for faster uploading
tar -zcf next-cache.tar.gz .next-cache
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: bash
args:
- "-c"
- |
gsutil cp next-cache.tar.gz gs://${_NEXT_PUBLIC_PROJECT_ID}_cloudbuild/next-cache.tar.gz
- name: "gcr.io/cloud-builders/docker"
args:
- "push"
- "${_AR_IMAGE}"
# Deploy to Cloud Run (attaching secrets at runtime)
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: gcloud
args:
- "run"
- "deploy"
- "ontology"
- "--image"
- "${_AR_IMAGE}"
- "--region"
- "us-central1"
- "--project"
- "ontology-41607"
- "--allow-unauthenticated"
- "--remove-env-vars=PROD_ONTOLOGY_CRED_TYPE,\
PROD_ONTOLOGY_CRED_PROJECT_ID,\
PROD_ONTOLOGY_CRED_PRIVATE_KEY_ID,\
PROD_ONTOLOGY_CRED_PRIVATE_KEY,\
PROD_ONTOLOGY_CRED_CLIENT_EMAIL,\
PROD_ONTOLOGY_CRED_CLIENT_ID,\
PROD_ONTOLOGY_CRED_AUTH_URI,\
PROD_ONTOLOGY_CRED_TOKEN_URI,\
PROD_ONTOLOGY_CRED_AUTH_PROVIDER_X509_CERT_URL,\
PROD_ONTOLOGY_CRED_CLIENT_X509_CERT_URL,\
PROD_ONTOLOGY_STORAGE_BUCKET"
- "--set-secrets=PROD_ONTOLOGY_CRED_TYPE=PROD_ONTOLOGY_CRED_TYPE:1,\
PROD_ONTOLOGY_CRED_PROJECT_ID=PROD_ONTOLOGY_CRED_PROJECT_ID:1,\
PROD_ONTOLOGY_CRED_PRIVATE_KEY_ID=PROD_ONTOLOGY_CRED_PRIVATE_KEY_ID:1,\
PROD_ONTOLOGY_CRED_PRIVATE_KEY=PROD_ONTOLOGY_CRED_PRIVATE_KEY:1,\
PROD_ONTOLOGY_CRED_CLIENT_EMAIL=PROD_ONTOLOGY_CRED_CLIENT_EMAIL:1,\
PROD_ONTOLOGY_CRED_CLIENT_ID=PROD_ONTOLOGY_CRED_CLIENT_ID:1,\
PROD_ONTOLOGY_CRED_AUTH_URI=PROD_ONTOLOGY_CRED_AUTH_URI:1,\
PROD_ONTOLOGY_CRED_TOKEN_URI=PROD_ONTOLOGY_CRED_TOKEN_URI:1,\
PROD_ONTOLOGY_CRED_AUTH_PROVIDER_X509_CERT_URL=PROD_ONTOLOGY_CRED_AUTH_PROVIDER_X509_CERT_URL:1,\
PROD_ONTOLOGY_CRED_CLIENT_X509_CERT_URL=PROD_ONTOLOGY_CRED_CLIENT_X509_CERT_URL:1,\
PROD_ONTOLOGY_STORAGE_BUCKET=PROD_ONTOLOGY_STORAGE_BUCKET:1"
timeout: 2000s