@catladder/pipeline 1.137.2 → 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.
@@ -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"",
@@ -160,6 +160,7 @@ jobs:
160
160
  },
161
161
  "script": [
162
162
  "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
163
+ "cd .",
163
164
  "docker pull $DOCKER_CACHE_IMAGE || true",
164
165
  "wget --output-document=- https://github.com/buildpacks/pack/releases/download/v0.32.1/pack-v0.32.1-linux.tgz | tar -zx --directory /usr/local/bin pack",
165
166
  "chmod +x /usr/local/bin/pack",
@@ -758,6 +759,7 @@ jobs:
758
759
  },
759
760
  "script": [
760
761
  "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
762
+ "cd .",
761
763
  "docker pull $DOCKER_CACHE_IMAGE || true",
762
764
  "wget --output-document=- https://github.com/buildpacks/pack/releases/download/v0.32.1/pack-v0.32.1-linux.tgz | tar -zx --directory /usr/local/bin pack",
763
765
  "chmod +x /usr/local/bin/pack",
@@ -1439,6 +1441,7 @@ jobs:
1439
1441
  },
1440
1442
  "script": [
1441
1443
  "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
1444
+ "cd .",
1442
1445
  "docker pull $DOCKER_CACHE_IMAGE || true",
1443
1446
  "wget --output-document=- https://github.com/buildpacks/pack/releases/download/v0.32.1/pack-v0.32.1-linux.tgz | tar -zx --directory /usr/local/bin pack",
1444
1447
  "chmod +x /usr/local/bin/pack",
@@ -1486,6 +1489,7 @@ jobs:
1486
1489
  },
1487
1490
  "script": [
1488
1491
  "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
1492
+ "cd .",
1489
1493
  "docker pull $DOCKER_CACHE_IMAGE || true",
1490
1494
  "wget --output-document=- https://github.com/buildpacks/pack/releases/download/v0.32.1/pack-v0.32.1-linux.tgz | tar -zx --directory /usr/local/bin pack",
1491
1495
  "chmod +x /usr/local/bin/pack",
@@ -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
@@ -52,7 +52,7 @@
52
52
  }
53
53
  ],
54
54
  "license": "MIT",
55
- "version": "1.137.2",
55
+ "version": "1.138.0",
56
56
  "scripts": {
57
57
  "build:tsc": "yarn tsc",
58
58
  "build": "yarn build:compile && yarn build:inline-variables && yarn build:bundle",
@@ -40,6 +40,7 @@ export const createRailsBuildJobs = (context: Context): CatladderJob[] => {
40
40
  // custom script
41
41
  script: [
42
42
  ...gitlabDockerLogin(context),
43
+ `cd ${context.componentConfig.dir}`,
43
44
  `docker pull $DOCKER_CACHE_IMAGE || true`,
44
45
  `wget --output-document=- https://github.com/buildpacks/pack/releases/download/v${cnbConf?.packVersion}/pack-v${cnbConf?.packVersion}-linux.tgz | tar -zx --directory /usr/local/bin pack`,
45
46
  `chmod +x /usr/local/bin/pack`,
@@ -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()} jobs update ${argsString}`,
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
- // 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
- });
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()} deploy ${fullServiceName} ${argsString}`;
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<string, string | number | true | false | undefined>;
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
+ };