@catladder/pipeline 1.137.3 → 1.138.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles/catladder-gitlab/index.js +1 -1
- package/dist/constants.js +1 -1
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +5 -1
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +37 -3
- package/dist/deploy/cloudRun/createJobs/volumes.d.ts +3 -0
- package/dist/deploy/cloudRun/createJobs/volumes.js +56 -0
- package/dist/deploy/cloudRun/utils/createArgsString.d.ts +1 -2
- package/dist/deploy/types/googleCloudRun.d.ts +16 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +1 -1
- package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +1879 -0
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +8 -8
- package/examples/cloud-run-service-with-volumes.ts +54 -0
- package/package.json +1 -1
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +10 -1
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +28 -19
- package/src/deploy/cloudRun/createJobs/volumes.ts +23 -0
- package/src/deploy/cloudRun/utils/createArgsString.ts +4 -1
- package/src/deploy/types/googleCloudRun.ts +22 -2
|
@@ -289,11 +289,11 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
289
289
|
"set +e",
|
|
290
290
|
"gcloud run jobs create pan-test-app-dev-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-job-name=pan-test-app-dev-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
291
291
|
"set -e",
|
|
292
|
-
"gcloud run jobs update pan-test-app-dev-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-job-name=pan-test-app-dev-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
292
|
+
"gcloud run jobs update pan-test-app-dev-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-job-name=pan-test-app-dev-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
293
293
|
"set +e",
|
|
294
294
|
"gcloud run jobs create pan-test-app-dev-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-job-name=pan-test-app-dev-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
295
295
|
"set -e",
|
|
296
|
-
"gcloud run jobs update pan-test-app-dev-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-job-name=pan-test-app-dev-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
296
|
+
"gcloud run jobs update pan-test-app-dev-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-job-name=pan-test-app-dev-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
297
297
|
"gcloud run deploy pan-test-app-dev-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-service-name=pan-test-app-dev-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
|
|
298
298
|
"gcloud run jobs execute pan-test-app-dev-api-migration --project=google-project-id --region=europe-west6",
|
|
299
299
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
@@ -1351,11 +1351,11 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1351
1351
|
"set +e",
|
|
1352
1352
|
"gcloud run jobs create pan-test-app-review-mr1234-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-job-name=pan-test-app-review-mr1234-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
1353
1353
|
"set -e",
|
|
1354
|
-
"gcloud run jobs update pan-test-app-review-mr1234-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-job-name=pan-test-app-review-mr1234-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
1354
|
+
"gcloud run jobs update pan-test-app-review-mr1234-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-job-name=pan-test-app-review-mr1234-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
1355
1355
|
"set +e",
|
|
1356
1356
|
"gcloud run jobs create pan-test-app-review-mr1234-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-job-name=pan-test-app-review-mr1234-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
1357
1357
|
"set -e",
|
|
1358
|
-
"gcloud run jobs update pan-test-app-review-mr1234-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-job-name=pan-test-app-review-mr1234-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
1358
|
+
"gcloud run jobs update pan-test-app-review-mr1234-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-job-name=pan-test-app-review-mr1234-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
1359
1359
|
"gcloud run deploy pan-test-app-review-mr1234-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-service-name=pan-test-app-review-mr1234-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
|
|
1360
1360
|
"gcloud run jobs execute pan-test-app-review-mr1234-api-migration --project=google-project-id --region=europe-west6",
|
|
1361
1361
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
@@ -2534,11 +2534,11 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
2534
2534
|
"set +e",
|
|
2535
2535
|
"gcloud run jobs create pan-test-app-prod-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-job-name=pan-test-app-prod-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2536
2536
|
"set -e",
|
|
2537
|
-
"gcloud run jobs update pan-test-app-prod-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-job-name=pan-test-app-prod-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2537
|
+
"gcloud run jobs update pan-test-app-prod-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-job-name=pan-test-app-prod-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
2538
2538
|
"set +e",
|
|
2539
2539
|
"gcloud run jobs create pan-test-app-prod-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-job-name=pan-test-app-prod-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2540
2540
|
"set -e",
|
|
2541
|
-
"gcloud run jobs update pan-test-app-prod-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-job-name=pan-test-app-prod-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2541
|
+
"gcloud run jobs update pan-test-app-prod-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-job-name=pan-test-app-prod-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
2542
2542
|
"gcloud run deploy pan-test-app-prod-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-service-name=pan-test-app-prod-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
|
|
2543
2543
|
"gcloud run jobs execute pan-test-app-prod-api-migration --project=google-project-id --region=europe-west6",
|
|
2544
2544
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
@@ -2678,11 +2678,11 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
2678
2678
|
"set +e",
|
|
2679
2679
|
"gcloud run jobs create pan-test-app-stage-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-job-name=pan-test-app-stage-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2680
2680
|
"set -e",
|
|
2681
|
-
"gcloud run jobs update pan-test-app-stage-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-job-name=pan-test-app-stage-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2681
|
+
"gcloud run jobs update pan-test-app-stage-api-migration --command="yarn,migrate" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-job-name=pan-test-app-stage-api-migration --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
2682
2682
|
"set +e",
|
|
2683
2683
|
"gcloud run jobs create pan-test-app-stage-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-job-name=pan-test-app-stage-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2684
2684
|
"set -e",
|
|
2685
|
-
"gcloud run jobs update pan-test-app-stage-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-job-name=pan-test-app-stage-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
2685
|
+
"gcloud run jobs update pan-test-app-stage-api-send-reminders --command="yarn,job:send-reminders" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-job-name=pan-test-app-stage-api-send-reminders --memory=512Mi --task-timeout=15m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
2686
2686
|
"gcloud run deploy pan-test-app-stage-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-service-name=pan-test-app-stage-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
|
|
2687
2687
|
"gcloud run jobs execute pan-test-app-stage-api-migration --project=google-project-id --region=europe-west6",
|
|
2688
2688
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Config } from "../src";
|
|
2
|
+
import { createAllPipelines } from "./__utils__/helpers";
|
|
3
|
+
const config: Config = {
|
|
4
|
+
appName: "test-app",
|
|
5
|
+
customerName: "pan",
|
|
6
|
+
components: {
|
|
7
|
+
api: {
|
|
8
|
+
dir: "api",
|
|
9
|
+
build: {
|
|
10
|
+
type: "node",
|
|
11
|
+
},
|
|
12
|
+
deploy: {
|
|
13
|
+
type: "google-cloudrun",
|
|
14
|
+
projectId: "google-project-id",
|
|
15
|
+
region: "europe-west6",
|
|
16
|
+
|
|
17
|
+
service: {
|
|
18
|
+
volumes: {
|
|
19
|
+
myMount: {
|
|
20
|
+
type: "cloud-storage",
|
|
21
|
+
bucket: "my-bucket",
|
|
22
|
+
mountPath: "/mnt/my-mount",
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
myOtherMount: {
|
|
26
|
+
type: "cloud-storage",
|
|
27
|
+
bucket: "some-other-bucket",
|
|
28
|
+
mountPath: "/mnt/my-second-mount",
|
|
29
|
+
readonly: true,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
jobs: {
|
|
35
|
+
migrate: {
|
|
36
|
+
command: "migrate",
|
|
37
|
+
when: "postDeploy",
|
|
38
|
+
volumes: {
|
|
39
|
+
myMount: {
|
|
40
|
+
type: "cloud-storage",
|
|
41
|
+
bucket: "my-bucket",
|
|
42
|
+
mountPath: "/mnt/my-mount",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
it("matches snapshot", async () => {
|
|
53
|
+
expect(await createAllPipelines(config)).toMatchSnapshot();
|
|
54
|
+
});
|
package/package.json
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
makeLabelString,
|
|
17
17
|
} from "./common";
|
|
18
18
|
import { getLabels } from "../../../context/getLabels";
|
|
19
|
+
import { createVolumeConfig } from "./volumes";
|
|
19
20
|
|
|
20
21
|
const getJobRunScriptForJob = (
|
|
21
22
|
context: Context,
|
|
@@ -90,6 +91,8 @@ const getJobCreateScriptsForJob = (
|
|
|
90
91
|
) => {
|
|
91
92
|
const commonDeployArgs = getCommonDeployArgs(context);
|
|
92
93
|
|
|
94
|
+
// due to some oversight from google, jobs create does not yet accept `--add-volume` 🤦
|
|
95
|
+
// lucky, update on the other hand accepts it... so let's just imediatly update it
|
|
93
96
|
// we cannot upsert a job, so we have to create it and catch the error and then update
|
|
94
97
|
const commandArray = Array.isArray(job.command)
|
|
95
98
|
? job.command
|
|
@@ -110,10 +113,16 @@ const getJobCreateScriptsForJob = (
|
|
|
110
113
|
"max-retries": 0,
|
|
111
114
|
});
|
|
112
115
|
|
|
116
|
+
const requiresBeta = job?.volumes && Object.keys(job?.volumes).length > 0;
|
|
117
|
+
|
|
113
118
|
const argsString = `${jobName} ${commonDeployArgsString}`;
|
|
114
119
|
return [
|
|
115
120
|
...allowFailureInScripts([`${gcloudRunCmd()} jobs create ${argsString}`]),
|
|
116
|
-
`${gcloudRunCmd(
|
|
121
|
+
`${gcloudRunCmd(
|
|
122
|
+
requiresBeta ? "beta" : undefined
|
|
123
|
+
)} jobs update ${argsString} ${createArgsString(
|
|
124
|
+
...createVolumeConfig(job?.volumes, "job")
|
|
125
|
+
)}`,
|
|
117
126
|
];
|
|
118
127
|
};
|
|
119
128
|
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
getCommonDeployArgs,
|
|
11
11
|
makeLabelString,
|
|
12
12
|
} from "./common";
|
|
13
|
+
import { createVolumeConfig } from "./volumes";
|
|
13
14
|
|
|
14
15
|
export const getServiceDeployScript = (
|
|
15
16
|
context: Context,
|
|
@@ -32,26 +33,34 @@ export const getServiceDeployScript = (
|
|
|
32
33
|
: command.split(" ")
|
|
33
34
|
: undefined;
|
|
34
35
|
const fullServiceName = `${serviceName}${nameSuffix ?? ""}`;
|
|
35
|
-
const argsString = createArgsString(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
36
|
+
const argsString = createArgsString(
|
|
37
|
+
{
|
|
38
|
+
// command as empty string resets it to default (uses the image's entrypoint)
|
|
39
|
+
command: commandArray ? '"' + commandArray.join(",") + '"' : '""',
|
|
40
|
+
...commonDeployArgs,
|
|
41
|
+
labels: makeLabelString({
|
|
42
|
+
...getLabels(context),
|
|
43
|
+
"cloud-run-service-name": fullServiceName,
|
|
44
|
+
}),
|
|
45
|
+
"env-vars-file": "____envvars.yaml",
|
|
46
|
+
"min-instances": customConfig?.minInstances ?? 0,
|
|
47
|
+
"max-instances": customConfig?.maxInstances ?? 100,
|
|
48
|
+
"cpu-throttling": customConfig?.noCpuThrottling !== true,
|
|
49
|
+
memory: customConfig?.memory,
|
|
50
|
+
"allow-unauthenticated": customConfig?.allowUnauthenticated ?? true,
|
|
51
|
+
ingress: customConfig?.ingress ?? "all",
|
|
52
|
+
"cpu-boost": true,
|
|
53
|
+
"execution-environment": customConfig?.executionEnvironment,
|
|
54
|
+
},
|
|
55
|
+
...createVolumeConfig(customConfig?.volumes, "service")
|
|
56
|
+
);
|
|
57
|
+
// volumes require beta
|
|
58
|
+
const requiresBeta =
|
|
59
|
+
customConfig?.volumes && Object.keys(customConfig?.volumes).length > 0;
|
|
53
60
|
|
|
54
|
-
return `${gcloudRunCmd(
|
|
61
|
+
return `${gcloudRunCmd(
|
|
62
|
+
requiresBeta ? "beta" : undefined
|
|
63
|
+
)} deploy ${fullServiceName} ${argsString}`;
|
|
55
64
|
};
|
|
56
65
|
|
|
57
66
|
export const getServiceDeleteScript = (
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DeployConfigCloudRunVolumes } from "../../types";
|
|
2
|
+
import type { keyValuesArg } from "../utils/createArgsString";
|
|
3
|
+
|
|
4
|
+
export const createVolumeConfig = (
|
|
5
|
+
volumes: DeployConfigCloudRunVolumes | undefined,
|
|
6
|
+
type: "service" | "job"
|
|
7
|
+
): keyValuesArg[] => {
|
|
8
|
+
if (!volumes) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return [
|
|
13
|
+
...Object.entries(volumes).map(
|
|
14
|
+
([volumeName, { type, bucket, mountPath, readonly }]) => ({
|
|
15
|
+
"add-volume": `name=${volumeName},type=${type},bucket=${bucket}${
|
|
16
|
+
readonly ? ",readonly=true" : ""
|
|
17
|
+
}`,
|
|
18
|
+
"add-volume-mount": `volume=${volumeName},mount-path=${mountPath}`,
|
|
19
|
+
})
|
|
20
|
+
),
|
|
21
|
+
type === "service" ? { "execution-environment": "gen2" } : {},
|
|
22
|
+
];
|
|
23
|
+
};
|
|
@@ -27,4 +27,7 @@ export const createArgsString = (...args: keyValuesArg[]) =>
|
|
|
27
27
|
.flat()
|
|
28
28
|
.join(" ");
|
|
29
29
|
|
|
30
|
-
type keyValuesArg = Record<
|
|
30
|
+
export type keyValuesArg = Record<
|
|
31
|
+
string,
|
|
32
|
+
string | number | true | false | undefined
|
|
33
|
+
>;
|
|
@@ -127,7 +127,7 @@ export type DeployConfigCloudRunService = {
|
|
|
127
127
|
* defaults to gen1 according to gcloud
|
|
128
128
|
*/
|
|
129
129
|
executionEnvironment?: "gen2" | "gen1";
|
|
130
|
-
};
|
|
130
|
+
} & DeployConfigCloudRunWithVolumes;
|
|
131
131
|
|
|
132
132
|
export type DeployConfigCloudRunJobBase = {
|
|
133
133
|
/**
|
|
@@ -156,7 +156,7 @@ export type DeployConfigCloudRunJobBase = {
|
|
|
156
156
|
* number of tasks that may run concurrently, defaults to 1
|
|
157
157
|
*/
|
|
158
158
|
parallelism?: number;
|
|
159
|
-
};
|
|
159
|
+
} & DeployConfigCloudRunWithVolumes;
|
|
160
160
|
|
|
161
161
|
type Minute = string;
|
|
162
162
|
type Hour = string;
|
|
@@ -180,6 +180,14 @@ export type DeployConfigCloudRunJobNormal = DeployConfigCloudRunJobBase & {
|
|
|
180
180
|
when: "manual" | "preDeploy" | "postDeploy" | "preStop" | "postStop";
|
|
181
181
|
};
|
|
182
182
|
|
|
183
|
+
export type DeployConfigCloudRunWithVolumes = {
|
|
184
|
+
/**
|
|
185
|
+
* adds volumes to the service. This is an experimental feature and requires beta gcloud.
|
|
186
|
+
* sets executionEnvironment to gen2 automatically, since that is required
|
|
187
|
+
*/
|
|
188
|
+
volumes?: DeployConfigCloudRunVolumes;
|
|
189
|
+
};
|
|
190
|
+
|
|
183
191
|
export type DeployConfigCloudRunJob =
|
|
184
192
|
| DeployConfigCloudRunJobNormal
|
|
185
193
|
| DeployConfigCloudRunJobWithSchedule;
|
|
@@ -223,3 +231,15 @@ export type DeployConfigCloudRun = {
|
|
|
223
231
|
*/
|
|
224
232
|
cloudSql?: DeployConfigCloudRunCloudSql | false;
|
|
225
233
|
} & DeployConfigBase;
|
|
234
|
+
|
|
235
|
+
export type DeployConfigCloudRunVolumes = Record<
|
|
236
|
+
string,
|
|
237
|
+
DeployConfigCloudRunVolume
|
|
238
|
+
>;
|
|
239
|
+
|
|
240
|
+
export type DeployConfigCloudRunVolume = {
|
|
241
|
+
type: "cloud-storage";
|
|
242
|
+
bucket: string;
|
|
243
|
+
mountPath: string;
|
|
244
|
+
readonly?: boolean;
|
|
245
|
+
};
|