@catladder/pipeline 1.134.0 → 1.135.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 +2 -2
- package/dist/constants.js +1 -1
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +7 -0
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +178 -0
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +4 -0
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +54 -0
- package/dist/deploy/cloudRun/createJobs/common.d.ts +18 -0
- package/dist/deploy/cloudRun/createJobs/common.js +90 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +2 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +56 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +2 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +52 -0
- package/dist/deploy/cloudRun/createJobs/index.d.ts +3 -0
- package/dist/deploy/cloudRun/createJobs/index.js +43 -0
- package/dist/deploy/cloudRun/createJobs/variables.d.ts +5 -0
- package/dist/deploy/cloudRun/createJobs/variables.js +19 -0
- package/dist/deploy/cloudRun/index.js +2 -2
- package/dist/deploy/types/googleCloudRun.d.ts +9 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +5 -5
- package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +1839 -0
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +36 -36
- package/examples/cloud-run-service-gen2.ts +27 -0
- package/package.json +1 -1
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +182 -0
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +74 -0
- package/src/deploy/cloudRun/createJobs/common.ts +59 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +58 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +34 -0
- package/src/deploy/cloudRun/createJobs/index.ts +45 -0
- package/src/deploy/cloudRun/createJobs/variables.ts +21 -0
- package/src/deploy/cloudRun/index.ts +1 -1
- package/src/deploy/types/googleCloudRun.ts +11 -1
- package/dist/deploy/cloudRun/deployJob.d.ts +0 -3
- package/dist/deploy/cloudRun/deployJob.js +0 -261
- package/src/deploy/cloudRun/deployJob.ts +0 -318
|
@@ -287,15 +287,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
287
287
|
"set -e",
|
|
288
288
|
"gcloud scheduler jobs update http pan-test-app-dev-api-send-reminders-scheduler --project=google-project-id --location=europe-west6 --schedule="0 * * * *" --max-retry-attempts=0 --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-send-reminders:run" --http-method=POST --oauth-service-account-email=$GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
289
289
|
"set +e",
|
|
290
|
-
"gcloud
|
|
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",
|
|
291
291
|
"set -e",
|
|
292
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
293
293
|
"set +e",
|
|
294
|
-
"gcloud
|
|
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",
|
|
295
295
|
"set -e",
|
|
296
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
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
|
-
"gcloud
|
|
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"",
|
|
300
300
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
301
301
|
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-dev-api --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done",
|
|
@@ -405,10 +405,10 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
405
405
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
406
406
|
"gcloud run services delete pan-test-app-dev-api --project=google-project-id --region=europe-west6",
|
|
407
407
|
"gcloud scheduler jobs delete pan-test-app-dev-api-send-reminders-scheduler --project=google-project-id --location=europe-west6",
|
|
408
|
-
"gcloud
|
|
409
|
-
"gcloud
|
|
410
|
-
"gcloud
|
|
411
|
-
"gcloud
|
|
408
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-dev-api-migration --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
409
|
+
"gcloud run jobs delete pan-test-app-dev-api-migration --project=google-project-id --region=europe-west6",
|
|
410
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-dev-api-send-reminders --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
411
|
+
"gcloud run jobs delete pan-test-app-dev-api-send-reminders --project=google-project-id --region=europe-west6",
|
|
412
412
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api --quiet --delete-tags",
|
|
413
413
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
414
414
|
"echo Disabling component in Dependency Track",
|
|
@@ -1349,15 +1349,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1349
1349
|
"set -e",
|
|
1350
1350
|
"gcloud scheduler jobs update http pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location=europe-west6 --schedule="0 * * * *" --max-retry-attempts=0 --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run" --http-method=POST --oauth-service-account-email=$GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
1351
1351
|
"set +e",
|
|
1352
|
-
"gcloud
|
|
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",
|
|
1353
1353
|
"set -e",
|
|
1354
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
1355
1355
|
"set +e",
|
|
1356
|
-
"gcloud
|
|
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",
|
|
1357
1357
|
"set -e",
|
|
1358
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
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
|
-
"gcloud
|
|
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"",
|
|
1362
1362
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
1363
1363
|
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-review-mr1234-api --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done",
|
|
@@ -1470,10 +1470,10 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1470
1470
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1471
1471
|
"gcloud run services delete pan-test-app-review-mr1234-api --project=google-project-id --region=europe-west6",
|
|
1472
1472
|
"gcloud scheduler jobs delete pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location=europe-west6",
|
|
1473
|
-
"gcloud
|
|
1474
|
-
"gcloud
|
|
1475
|
-
"gcloud
|
|
1476
|
-
"gcloud
|
|
1473
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-review-mr1234-api-migration --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
1474
|
+
"gcloud run jobs delete pan-test-app-review-mr1234-api-migration --project=google-project-id --region=europe-west6",
|
|
1475
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-review-mr1234-api-send-reminders --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
1476
|
+
"gcloud run jobs delete pan-test-app-review-mr1234-api-send-reminders --project=google-project-id --region=europe-west6",
|
|
1477
1477
|
"echo "deleting database pan-test-app-review-mr1234-api..."",
|
|
1478
1478
|
"echo "👆 this can take multiple attemps (3-5min), because google cloud run may still have a connection to the database after the cloud run service is shut down"",
|
|
1479
1479
|
"
|
|
@@ -2532,15 +2532,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
2532
2532
|
"set -e",
|
|
2533
2533
|
"gcloud scheduler jobs update http pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location=europe-west6 --schedule="0 * * * *" --max-retry-attempts=0 --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run" --http-method=POST --oauth-service-account-email=$GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
2534
2534
|
"set +e",
|
|
2535
|
-
"gcloud
|
|
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",
|
|
2536
2536
|
"set -e",
|
|
2537
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
2538
2538
|
"set +e",
|
|
2539
|
-
"gcloud
|
|
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",
|
|
2540
2540
|
"set -e",
|
|
2541
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
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
|
-
"gcloud
|
|
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"",
|
|
2545
2545
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
2546
2546
|
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-prod-api --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | tail -n +6 | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done",
|
|
@@ -2676,15 +2676,15 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
2676
2676
|
"set -e",
|
|
2677
2677
|
"gcloud scheduler jobs update http pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location=europe-west6 --schedule="0 * * * *" --max-retry-attempts=0 --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run" --http-method=POST --oauth-service-account-email=$GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
2678
2678
|
"set +e",
|
|
2679
|
-
"gcloud
|
|
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",
|
|
2680
2680
|
"set -e",
|
|
2681
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
2682
2682
|
"set +e",
|
|
2683
|
-
"gcloud
|
|
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",
|
|
2684
2684
|
"set -e",
|
|
2685
|
-
"gcloud
|
|
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 --env-vars-file=____envvars.yaml",
|
|
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
|
-
"gcloud
|
|
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"",
|
|
2689
2689
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
2690
2690
|
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-stage-api --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done",
|
|
@@ -2794,10 +2794,10 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
2794
2794
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
2795
2795
|
"gcloud run services delete pan-test-app-prod-api --project=google-project-id --region=europe-west6",
|
|
2796
2796
|
"gcloud scheduler jobs delete pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location=europe-west6",
|
|
2797
|
-
"gcloud
|
|
2798
|
-
"gcloud
|
|
2799
|
-
"gcloud
|
|
2800
|
-
"gcloud
|
|
2797
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-prod-api-migration --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
2798
|
+
"gcloud run jobs delete pan-test-app-prod-api-migration --project=google-project-id --region=europe-west6",
|
|
2799
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-prod-api-send-reminders --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
2800
|
+
"gcloud run jobs delete pan-test-app-prod-api-send-reminders --project=google-project-id --region=europe-west6",
|
|
2801
2801
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api --quiet --delete-tags",
|
|
2802
2802
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
2803
2803
|
"echo Disabling component in Dependency Track",
|
|
@@ -2845,10 +2845,10 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
2845
2845
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
2846
2846
|
"gcloud run services delete pan-test-app-stage-api --project=google-project-id --region=europe-west6",
|
|
2847
2847
|
"gcloud scheduler jobs delete pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location=europe-west6",
|
|
2848
|
-
"gcloud
|
|
2849
|
-
"gcloud
|
|
2850
|
-
"gcloud
|
|
2851
|
-
"gcloud
|
|
2848
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-stage-api-migration --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
2849
|
+
"gcloud run jobs delete pan-test-app-stage-api-migration --project=google-project-id --region=europe-west6",
|
|
2850
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-stage-api-send-reminders --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
2851
|
+
"gcloud run jobs delete pan-test-app-stage-api-send-reminders --project=google-project-id --region=europe-west6",
|
|
2852
2852
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api --quiet --delete-tags",
|
|
2853
2853
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
2854
2854
|
"echo Disabling component in Dependency Track",
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
executionEnvironment: "gen2",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
it("matches snapshot", async () => {
|
|
26
|
+
expect(await createAllPipelines(config)).toMatchSnapshot();
|
|
27
|
+
});
|
package/package.json
CHANGED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { Context } from "../../../types/context";
|
|
2
|
+
import { allowFailureInScripts } from "../../../utils/gitlab";
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
DeployConfigCloudRunJob,
|
|
6
|
+
DeployConfigCloudRunJobWithSchedule,
|
|
7
|
+
} from "../../types/googleCloudRun";
|
|
8
|
+
import { createArgsString } from "../utils/createArgsString";
|
|
9
|
+
import { getCloudRunJobName } from "../utils/jobName";
|
|
10
|
+
import {
|
|
11
|
+
gcloudRunCmd,
|
|
12
|
+
gcloudSchedulerCmd,
|
|
13
|
+
getCloudRunDeployConfig,
|
|
14
|
+
getCommonCloudRunArgs,
|
|
15
|
+
getCommonDeployArgs,
|
|
16
|
+
makeLabelString,
|
|
17
|
+
} from "./common";
|
|
18
|
+
import { getLabels } from "../../../context/getLabels";
|
|
19
|
+
|
|
20
|
+
const getJobRunScriptForJob = (
|
|
21
|
+
context: Context,
|
|
22
|
+
jobName: string,
|
|
23
|
+
wait: boolean
|
|
24
|
+
) => {
|
|
25
|
+
const commonArgs = getCommonCloudRunArgs(context);
|
|
26
|
+
|
|
27
|
+
const commonArgsString = createArgsString(commonArgs);
|
|
28
|
+
return `${gcloudRunCmd()} jobs execute ${jobName} ${commonArgsString}${
|
|
29
|
+
wait ? " --wait" : ""
|
|
30
|
+
}`;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const getDeleteSchedulesScripts = (context: Context) => {
|
|
34
|
+
const deployConfig = getCloudRunDeployConfig(context);
|
|
35
|
+
const jobsWithSchedule = getCloudRunJobsWithSchedule(context);
|
|
36
|
+
const argsString = createArgsString({
|
|
37
|
+
project: deployConfig.projectId,
|
|
38
|
+
location: deployConfig.region,
|
|
39
|
+
});
|
|
40
|
+
return jobsWithSchedule
|
|
41
|
+
.map(({ schedulerName }) => {
|
|
42
|
+
return [
|
|
43
|
+
`${gcloudSchedulerCmd()} jobs delete ${schedulerName} ${argsString}`,
|
|
44
|
+
];
|
|
45
|
+
})
|
|
46
|
+
.flat();
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const getDeleteJobsScripts = (context: Context) => {
|
|
50
|
+
const commonArgs = getCommonCloudRunArgs(context);
|
|
51
|
+
const commonArgsString = createArgsString(commonArgs);
|
|
52
|
+
const jobsWithNames = getCloudRunJobsWithNames(context);
|
|
53
|
+
|
|
54
|
+
return jobsWithNames.flatMap(({ jobName }) => [
|
|
55
|
+
// first delete all job executions. Otherwise delete might fail if one of those is still running
|
|
56
|
+
`${gcloudRunCmd()} jobs executions list ${commonArgsString} --job ${jobName} --format="value(name)" | xargs -I {} ${gcloudRunCmd()} jobs executions delete {} --quiet ${commonArgsString}`,
|
|
57
|
+
`${gcloudRunCmd()} jobs delete ${jobName} ${commonArgsString}`,
|
|
58
|
+
]);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const getJobRunScripts = (
|
|
62
|
+
context: Context,
|
|
63
|
+
when: DeployConfigCloudRunJob["when"]
|
|
64
|
+
) => {
|
|
65
|
+
const jobsWithNames = getCloudRunJobsWithNames(context);
|
|
66
|
+
return jobsWithNames
|
|
67
|
+
.filter(({ job }) => job.when === when)
|
|
68
|
+
.map(({ jobName }) =>
|
|
69
|
+
getJobRunScriptForJob(
|
|
70
|
+
context,
|
|
71
|
+
jobName,
|
|
72
|
+
// wait for completin on stop jobs, since stop will delete the jobs afterwards, so they will fail
|
|
73
|
+
["preStop", "postStop"].includes(when)
|
|
74
|
+
)
|
|
75
|
+
);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export const getJobCreateScripts = (context: Context) => {
|
|
79
|
+
const jobsWithNames = getCloudRunJobsWithNames(context);
|
|
80
|
+
|
|
81
|
+
return jobsWithNames
|
|
82
|
+
.map(({ job, jobName }) => getJobCreateScriptsForJob(context, jobName, job))
|
|
83
|
+
.flat();
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const getJobCreateScriptsForJob = (
|
|
87
|
+
context: Context,
|
|
88
|
+
jobName: string,
|
|
89
|
+
job: DeployConfigCloudRunJob
|
|
90
|
+
) => {
|
|
91
|
+
const commonDeployArgs = getCommonDeployArgs(context);
|
|
92
|
+
|
|
93
|
+
// due to some oversight from google, jobs create does not accept `--env-vars-file` 🤦
|
|
94
|
+
// lucky, update on the other hand accepts it... so let's just imediatly update it
|
|
95
|
+
// also we cannot upsert a job, so we have to create it and catch the error and then update
|
|
96
|
+
const commandArray = Array.isArray(job.command)
|
|
97
|
+
? job.command
|
|
98
|
+
: job.command.split(" ");
|
|
99
|
+
|
|
100
|
+
const commonDeployArgsString = createArgsString({
|
|
101
|
+
command: '"' + commandArray.join(",") + '"',
|
|
102
|
+
...commonDeployArgs,
|
|
103
|
+
labels: makeLabelString({
|
|
104
|
+
...getLabels(context),
|
|
105
|
+
"cloud-run-job-name": jobName,
|
|
106
|
+
}),
|
|
107
|
+
image: job.image || commonDeployArgs.image,
|
|
108
|
+
memory: job.memory || "512Mi",
|
|
109
|
+
"task-timeout": job.timeout || "10m",
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
const argsString = `${jobName} ${commonDeployArgsString}`;
|
|
113
|
+
return [
|
|
114
|
+
...allowFailureInScripts([`${gcloudRunCmd()} jobs create ${argsString}`]),
|
|
115
|
+
`${gcloudRunCmd()} jobs update ${argsString} --env-vars-file=____envvars.yaml`,
|
|
116
|
+
];
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export const getCreateScheduleScripts = (context: Context) => {
|
|
120
|
+
const jobsWithSchedule = getCloudRunJobsWithSchedule(context);
|
|
121
|
+
const deployConfig = getCloudRunDeployConfig(context);
|
|
122
|
+
|
|
123
|
+
return jobsWithSchedule
|
|
124
|
+
.map(({ job, jobName, schedulerName }) => {
|
|
125
|
+
const argsString = createArgsString({
|
|
126
|
+
project: deployConfig.projectId,
|
|
127
|
+
location: deployConfig.region,
|
|
128
|
+
schedule: `"${job.schedule}"`,
|
|
129
|
+
"max-retry-attempts": job.maxRetryAttempts ?? 0,
|
|
130
|
+
|
|
131
|
+
uri: `"https://${deployConfig.region}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${deployConfig.projectId}/jobs/${jobName}:run"`,
|
|
132
|
+
"http-method": "POST",
|
|
133
|
+
"oauth-service-account-email":
|
|
134
|
+
"$GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
135
|
+
});
|
|
136
|
+
const commonArgs = `http ${schedulerName} ${argsString}`;
|
|
137
|
+
return [
|
|
138
|
+
...allowFailureInScripts([
|
|
139
|
+
`${gcloudSchedulerCmd()} jobs create ${commonArgs}`,
|
|
140
|
+
]),
|
|
141
|
+
`${gcloudSchedulerCmd()} jobs update ${commonArgs}`,
|
|
142
|
+
];
|
|
143
|
+
})
|
|
144
|
+
.flat();
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const getCloudRunJobsWithSchedule = (context: Context) => {
|
|
148
|
+
const jobsWithNames = getCloudRunJobsWithNames(context);
|
|
149
|
+
|
|
150
|
+
return jobsWithNames
|
|
151
|
+
.filter(
|
|
152
|
+
(
|
|
153
|
+
entry
|
|
154
|
+
): entry is {
|
|
155
|
+
jobName: string;
|
|
156
|
+
job: DeployConfigCloudRunJobWithSchedule;
|
|
157
|
+
} => entry.job.when === "schedule"
|
|
158
|
+
)
|
|
159
|
+
.map(({ job, jobName }) => ({
|
|
160
|
+
job,
|
|
161
|
+
jobName,
|
|
162
|
+
schedulerName: jobName + "-scheduler",
|
|
163
|
+
}));
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
const getCloudRunJobsWithNames = (context: Context) => {
|
|
167
|
+
const deployConfig = getCloudRunDeployConfig(context);
|
|
168
|
+
|
|
169
|
+
const getFullJobName = (name: string) =>
|
|
170
|
+
getCloudRunJobName(context.environment.fullName, name);
|
|
171
|
+
|
|
172
|
+
const jobsWithNames = Object.entries(deployConfig.jobs ?? {})
|
|
173
|
+
// filter out disabled jobs
|
|
174
|
+
.filter((entry): entry is [string, DeployConfigCloudRunJob] =>
|
|
175
|
+
Boolean(entry[1])
|
|
176
|
+
)
|
|
177
|
+
.map(([name, job]) => ({
|
|
178
|
+
jobName: getFullJobName(name),
|
|
179
|
+
job,
|
|
180
|
+
}));
|
|
181
|
+
return jobsWithNames;
|
|
182
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { getLabels } from "../../../context/getLabels";
|
|
2
|
+
import type { Context } from "../../../types/context";
|
|
3
|
+
|
|
4
|
+
import type { DeployConfigCloudRunService } from "../../types/googleCloudRun";
|
|
5
|
+
import { createArgsString } from "../utils/createArgsString";
|
|
6
|
+
import { getServiceName } from "../utils/getServiceName";
|
|
7
|
+
import {
|
|
8
|
+
gcloudRunCmd,
|
|
9
|
+
getCommonCloudRunArgs,
|
|
10
|
+
getCommonDeployArgs,
|
|
11
|
+
makeLabelString,
|
|
12
|
+
} from "./common";
|
|
13
|
+
|
|
14
|
+
export const getServiceDeployScript = (
|
|
15
|
+
context: Context,
|
|
16
|
+
service: DeployConfigCloudRunService | true | undefined,
|
|
17
|
+
nameSuffix?: string
|
|
18
|
+
) => {
|
|
19
|
+
const commonDeployArgs = getCommonDeployArgs(context);
|
|
20
|
+
|
|
21
|
+
const serviceName = getServiceName(context);
|
|
22
|
+
|
|
23
|
+
const customConfig = service !== true ? service : undefined;
|
|
24
|
+
const command =
|
|
25
|
+
service !== true
|
|
26
|
+
? service?.command ?? context.componentConfig.build.startCommand
|
|
27
|
+
: undefined;
|
|
28
|
+
|
|
29
|
+
const commandArray = command
|
|
30
|
+
? Array.isArray(command)
|
|
31
|
+
? command
|
|
32
|
+
: command.split(" ")
|
|
33
|
+
: undefined;
|
|
34
|
+
const fullServiceName = `${serviceName}${nameSuffix ?? ""}`;
|
|
35
|
+
const argsString = createArgsString({
|
|
36
|
+
// command as empty string resets it to default (uses the image's entrypoint)
|
|
37
|
+
command: commandArray ? '"' + commandArray.join(",") + '"' : '""',
|
|
38
|
+
...commonDeployArgs,
|
|
39
|
+
labels: makeLabelString({
|
|
40
|
+
...getLabels(context),
|
|
41
|
+
"cloud-run-service-name": fullServiceName,
|
|
42
|
+
}),
|
|
43
|
+
"env-vars-file": "____envvars.yaml",
|
|
44
|
+
"min-instances": customConfig?.minInstances ?? 0,
|
|
45
|
+
"max-instances": customConfig?.maxInstances ?? 100,
|
|
46
|
+
"cpu-throttling": customConfig?.noCpuThrottling !== true,
|
|
47
|
+
memory: customConfig?.memory,
|
|
48
|
+
"allow-unauthenticated": customConfig?.allowUnauthenticated ?? true,
|
|
49
|
+
ingress: customConfig?.ingress ?? "all",
|
|
50
|
+
"cpu-boost": true,
|
|
51
|
+
"execution-environment": customConfig?.executionEnvironment,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return `${gcloudRunCmd()} deploy ${fullServiceName} ${argsString}`;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const getServiceDeleteScript = (
|
|
58
|
+
context: Context,
|
|
59
|
+
serviceSuffix?: string
|
|
60
|
+
) => {
|
|
61
|
+
const commonArgs = getCommonCloudRunArgs(context);
|
|
62
|
+
|
|
63
|
+
const commonArgsString = createArgsString(commonArgs);
|
|
64
|
+
|
|
65
|
+
const serviceName = getServiceName(context);
|
|
66
|
+
|
|
67
|
+
const fullServiceName = serviceSuffix
|
|
68
|
+
? `${serviceName}-${serviceSuffix}`
|
|
69
|
+
: serviceName;
|
|
70
|
+
|
|
71
|
+
return [
|
|
72
|
+
`${gcloudRunCmd()} services delete ${fullServiceName} ${commonArgsString}`,
|
|
73
|
+
];
|
|
74
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Context } from "../../../types/context";
|
|
2
|
+
|
|
3
|
+
import { isOfDeployType } from "../../types";
|
|
4
|
+
import type { DeployConfigCloudRun } from "../../types/googleCloudRun";
|
|
5
|
+
import { getArtifactsRegistryImage } from "../artifactsRegistry";
|
|
6
|
+
|
|
7
|
+
export const gcloudCmd = (version?: "beta") => {
|
|
8
|
+
return version ? `gcloud ${version}` : "gcloud";
|
|
9
|
+
};
|
|
10
|
+
export const gcloudRunCmd = (version?: "beta") => {
|
|
11
|
+
return `${gcloudCmd(version)} run`;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const gcloudSchedulerCmd = (version?: "beta") => {
|
|
15
|
+
return `${gcloudCmd(version)} scheduler`;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const setGoogleProjectNumberScript = (
|
|
19
|
+
deployConfig: DeployConfigCloudRun
|
|
20
|
+
) => [
|
|
21
|
+
`export GCLOUD_PROJECT_NUMBER=$(${gcloudCmd()} projects describe ${
|
|
22
|
+
deployConfig.projectId
|
|
23
|
+
} --format="value(projectNumber)")`,
|
|
24
|
+
`echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"`,
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export const makeLabelString = (obj: Record<string, unknown>) =>
|
|
28
|
+
Object.entries(obj)
|
|
29
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
30
|
+
.join(",");
|
|
31
|
+
|
|
32
|
+
export const getCloudRunDeployConfig = (context: Context) => {
|
|
33
|
+
const deployConfig = context.componentConfig.deploy;
|
|
34
|
+
if (!isOfDeployType(deployConfig, "google-cloudrun")) {
|
|
35
|
+
// should not happen
|
|
36
|
+
throw new Error("deploy config is wrong");
|
|
37
|
+
}
|
|
38
|
+
return deployConfig;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export function getCommonCloudRunArgs(context: Context) {
|
|
42
|
+
const deployConfig = getCloudRunDeployConfig(context);
|
|
43
|
+
return {
|
|
44
|
+
project: deployConfig.projectId,
|
|
45
|
+
region: deployConfig.region,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function getCommonDeployArgs(context: Context) {
|
|
50
|
+
const commonArgs = getCommonCloudRunArgs(context);
|
|
51
|
+
const deployConfig = getCloudRunDeployConfig(context);
|
|
52
|
+
return {
|
|
53
|
+
image: getArtifactsRegistryImage(context),
|
|
54
|
+
...commonArgs,
|
|
55
|
+
"set-cloudsql-instances": deployConfig.cloudSql
|
|
56
|
+
? deployConfig.cloudSql.instanceConnectionName
|
|
57
|
+
: undefined,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Context } from "../../../types/context";
|
|
2
|
+
import { collapseableSection } from "../../../utils/gitlab";
|
|
3
|
+
import { getDependencyTrackUploadScript } from "../../sbom";
|
|
4
|
+
|
|
5
|
+
import { getRemoveOldRevisionsAndImagesCommand } from "../cleanup";
|
|
6
|
+
import { getDatabaseCreateScript } from "../utils/database";
|
|
7
|
+
import { gcloudServiceAccountLoginCommands } from "../utils/gcloudServiceAccountLoginCommands";
|
|
8
|
+
import {
|
|
9
|
+
getCreateScheduleScripts,
|
|
10
|
+
getJobCreateScripts,
|
|
11
|
+
getJobRunScripts,
|
|
12
|
+
} from "./cloudRunJobs";
|
|
13
|
+
import { getServiceDeployScript } from "./cloudRunServices";
|
|
14
|
+
import {
|
|
15
|
+
getCloudRunDeployConfig,
|
|
16
|
+
setGoogleProjectNumberScript,
|
|
17
|
+
} from "./common";
|
|
18
|
+
|
|
19
|
+
export function getCloudRunDeployScripts(context: Context) {
|
|
20
|
+
const deployConfig = getCloudRunDeployConfig(context);
|
|
21
|
+
return [
|
|
22
|
+
...collapseableSection(
|
|
23
|
+
"prepare",
|
|
24
|
+
"Prepare..."
|
|
25
|
+
)([
|
|
26
|
+
...gcloudServiceAccountLoginCommands(context),
|
|
27
|
+
...setGoogleProjectNumberScript(deployConfig),
|
|
28
|
+
]),
|
|
29
|
+
...collapseableSection(
|
|
30
|
+
"deploy",
|
|
31
|
+
"Deploy to cloud run"
|
|
32
|
+
)([
|
|
33
|
+
`echo "$ENV_VARS" > ____envvars.yaml`, // TODO: split secrets out
|
|
34
|
+
...(deployConfig.cloudSql
|
|
35
|
+
? getDatabaseCreateScript(context, deployConfig) // we create the db, so that we can also delete it afterwards
|
|
36
|
+
: []),
|
|
37
|
+
...getCreateScheduleScripts(context),
|
|
38
|
+
...getJobCreateScripts(context),
|
|
39
|
+
...getJobRunScripts(context, "preDeploy"),
|
|
40
|
+
|
|
41
|
+
...(deployConfig.service !== false
|
|
42
|
+
? [getServiceDeployScript(context, deployConfig.service)]
|
|
43
|
+
: []),
|
|
44
|
+
...Object.entries(deployConfig.additionalServices ?? {}).map(
|
|
45
|
+
([name, service]) =>
|
|
46
|
+
getServiceDeployScript(context, service, "-" + name)
|
|
47
|
+
),
|
|
48
|
+
...getJobRunScripts(context, "postDeploy"),
|
|
49
|
+
]),
|
|
50
|
+
...collapseableSection(
|
|
51
|
+
"cleanup",
|
|
52
|
+
"Cleanup"
|
|
53
|
+
)(
|
|
54
|
+
getRemoveOldRevisionsAndImagesCommand(context, "postDeploy") // we cleanup inactive images both on deploy and stop
|
|
55
|
+
),
|
|
56
|
+
...getDependencyTrackUploadScript(context),
|
|
57
|
+
];
|
|
58
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Context } from "../../../types/context";
|
|
2
|
+
import { getDependencyTrackDeleteScript } from "../../sbom";
|
|
3
|
+
|
|
4
|
+
import { getRemoveOldRevisionsAndImagesCommand } from "../cleanup";
|
|
5
|
+
import { getDatabaseDeleteScript } from "../utils/database";
|
|
6
|
+
import { gcloudServiceAccountLoginCommands } from "../utils/gcloudServiceAccountLoginCommands";
|
|
7
|
+
import {
|
|
8
|
+
getDeleteJobsScripts,
|
|
9
|
+
getDeleteSchedulesScripts,
|
|
10
|
+
getJobRunScripts,
|
|
11
|
+
} from "./cloudRunJobs";
|
|
12
|
+
import { getServiceDeleteScript } from "./cloudRunServices";
|
|
13
|
+
import { getCloudRunDeployConfig } from "./common";
|
|
14
|
+
|
|
15
|
+
export function getCloudRunStopScripts(context: Context) {
|
|
16
|
+
const deployConfig = getCloudRunDeployConfig(context);
|
|
17
|
+
return [
|
|
18
|
+
...gcloudServiceAccountLoginCommands(context),
|
|
19
|
+
...getJobRunScripts(context, "preStop"),
|
|
20
|
+
...(deployConfig.service !== false ? getServiceDeleteScript(context) : []),
|
|
21
|
+
...Object.entries(deployConfig.additionalServices ?? {}).flatMap(([name]) =>
|
|
22
|
+
getServiceDeleteScript(context, name)
|
|
23
|
+
),
|
|
24
|
+
...getJobRunScripts(context, "postStop"),
|
|
25
|
+
...getDeleteSchedulesScripts(context),
|
|
26
|
+
...getDeleteJobsScripts(context),
|
|
27
|
+
...(deployConfig.cloudSql && deployConfig.cloudSql.deleteDatabaseOnStop
|
|
28
|
+
? getDatabaseDeleteScript(context, deployConfig)
|
|
29
|
+
: []),
|
|
30
|
+
|
|
31
|
+
...getRemoveOldRevisionsAndImagesCommand(context, "onStop"), // we cleanup inactive images both on deploy and stop
|
|
32
|
+
...getDependencyTrackDeleteScript(context),
|
|
33
|
+
];
|
|
34
|
+
}
|