@catladder/pipeline 1.125.1 → 1.126.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.
Files changed (32) hide show
  1. package/dist/bundles/catladder-gitlab/index.js +1 -1
  2. package/dist/constants.js +1 -1
  3. package/dist/deploy/base/deploy.js +1 -1
  4. package/dist/deploy/cloudRun/deployJob.js +10 -6
  5. package/dist/deploy/types/googleCloudRun.d.ts +6 -2
  6. package/dist/tsconfig.tsbuildinfo +1 -1
  7. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +1 -1
  8. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +1 -1
  9. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +1 -1
  10. package/examples/__snapshots__/cloud-run-non-public.ts.snap +1 -1
  11. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +1855 -0
  12. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +2 -2
  13. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +2 -2
  14. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +1 -1
  15. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +1 -1
  16. package/examples/__snapshots__/custom-build-job.ts.snap +1 -1
  17. package/examples/__snapshots__/custom-deploy.ts.snap +1 -1
  18. package/examples/__snapshots__/custom-sbom-java.ts.snap +1 -1
  19. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +1 -1
  20. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +1 -1
  21. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +1 -1
  22. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +2 -2
  23. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +1 -1
  24. package/examples/__snapshots__/meteor-kubernetes.ts.snap +1 -1
  25. package/examples/__snapshots__/native-app.ts.snap +1 -1
  26. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +1 -1
  27. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +2 -2
  28. package/examples/cloud-run-post-stop-job.ts +40 -0
  29. package/package.json +1 -1
  30. package/src/deploy/base/deploy.ts +1 -1
  31. package/src/deploy/cloudRun/deployJob.ts +20 -4
  32. package/src/deploy/types/googleCloudRun.ts +7 -2
@@ -1277,7 +1277,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1277
1277
  ],
1278
1278
  },
1279
1279
  "environment": {
1280
- "auto_stop_in": "2 week",
1280
+ "auto_stop_in": "1 week",
1281
1281
  "name": "review/some-commit/api",
1282
1282
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1283
1283
  "url": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
@@ -1783,7 +1783,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1783
1783
  ],
1784
1784
  },
1785
1785
  "environment": {
1786
- "auto_stop_in": "2 week",
1786
+ "auto_stop_in": "1 week",
1787
1787
  "name": "review/some-commit/worker",
1788
1788
  "on_stop": "worker 🛑 Stop ⚠️ | review ",
1789
1789
  "url": "https://pan-test-app-review-mr1234-worker-unknown-host.example.com",
@@ -1284,7 +1284,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1284
1284
  ],
1285
1285
  },
1286
1286
  "environment": {
1287
- "auto_stop_in": "2 week",
1287
+ "auto_stop_in": "1 week",
1288
1288
  "name": "review/some-commit/api",
1289
1289
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1290
1290
  "url": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
@@ -1807,7 +1807,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1807
1807
  ],
1808
1808
  },
1809
1809
  "environment": {
1810
- "auto_stop_in": "2 week",
1810
+ "auto_stop_in": "1 week",
1811
1811
  "name": "review/some-commit/www",
1812
1812
  "on_stop": "www 🛑 Stop ⚠️ | review ",
1813
1813
  "url": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
@@ -760,7 +760,7 @@ COPY --chown=node:node .yarn /app/.yarn",
760
760
  ],
761
761
  },
762
762
  "environment": {
763
- "auto_stop_in": "2 week",
763
+ "auto_stop_in": "1 week",
764
764
  "name": "review/some-commit/api",
765
765
  "on_stop": "api 🛑 Stop ⚠️ | review ",
766
766
  "url": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
@@ -670,7 +670,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
670
670
  ],
671
671
  },
672
672
  "environment": {
673
- "auto_stop_in": "2 week",
673
+ "auto_stop_in": "1 week",
674
674
  "name": "review/some-commit/www",
675
675
  "on_stop": "www 🛑 Stop ⚠️ | review ",
676
676
  "url": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
@@ -484,7 +484,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
484
484
  ],
485
485
  },
486
486
  "environment": {
487
- "auto_stop_in": "2 week",
487
+ "auto_stop_in": "1 week",
488
488
  "name": "review/some-commit/www",
489
489
  "on_stop": "www 🛑 Stop ⚠️ | review ",
490
490
  "url": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
@@ -693,7 +693,7 @@ COPY --chown=node:node .yarn /app/.yarn",
693
693
  "allow_failure": false,
694
694
  "cache": [],
695
695
  "environment": {
696
- "auto_stop_in": "2 week",
696
+ "auto_stop_in": "1 week",
697
697
  "name": "review/some-commit/www",
698
698
  "on_stop": "www 🛑 Stop ⚠️ | review ",
699
699
  "url": "https://unknown-host.example.com",
@@ -487,7 +487,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
487
487
  ],
488
488
  },
489
489
  "environment": {
490
- "auto_stop_in": "2 week",
490
+ "auto_stop_in": "1 week",
491
491
  "name": "review/some-commit/app",
492
492
  "on_stop": "app 🛑 Stop ⚠️ | review ",
493
493
  "url": "https://pan-test-app-review-mr1234-app-unknown-host.example.com",
@@ -1025,7 +1025,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1025
1025
  "api 🚀 Deploy | review ": {
1026
1026
  "allow_failure": false,
1027
1027
  "environment": {
1028
- "auto_stop_in": "2 week",
1028
+ "auto_stop_in": "1 week",
1029
1029
  "name": "review/some-commit/api",
1030
1030
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1031
1031
  "url": "https://api.mr1234.review.test-app.pan.panter.cloud",
@@ -1013,7 +1013,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1013
1013
  "api 🚀 Deploy | review ": {
1014
1014
  "allow_failure": false,
1015
1015
  "environment": {
1016
- "auto_stop_in": "2 week",
1016
+ "auto_stop_in": "1 week",
1017
1017
  "name": "review/some-commit/api",
1018
1018
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1019
1019
  "url": "https://api.mr1234.review.test-app.pan.panter.cloud",
@@ -1017,7 +1017,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1017
1017
  "api 🚀 Deploy | review ": {
1018
1018
  "allow_failure": false,
1019
1019
  "environment": {
1020
- "auto_stop_in": "2 week",
1020
+ "auto_stop_in": "1 week",
1021
1021
  "name": "review/some-commit/api",
1022
1022
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1023
1023
  "url": "https://api.mr1234.review.test-app.pan.panter.cloud",
@@ -1593,7 +1593,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1593
1593
  "api 🚀 Deploy | review ": {
1594
1594
  "allow_failure": false,
1595
1595
  "environment": {
1596
- "auto_stop_in": "2 week",
1596
+ "auto_stop_in": "1 week",
1597
1597
  "name": "review/some-commit/api",
1598
1598
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1599
1599
  "url": "https://api.mr1234.review.test-app.pan.panter.cloud",
@@ -2200,7 +2200,7 @@ COPY --chown=node:node .yarn /app/.yarn",
2200
2200
  "www 🚀 Deploy | review ": {
2201
2201
  "allow_failure": false,
2202
2202
  "environment": {
2203
- "auto_stop_in": "2 week",
2203
+ "auto_stop_in": "1 week",
2204
2204
  "name": "review/some-commit/www",
2205
2205
  "on_stop": "www 🛑 Stop ⚠️ | review ",
2206
2206
  "url": "https://www.mr1234.review.test-app.pan.panter.cloud",
@@ -1081,7 +1081,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1081
1081
  "api 🚀 Deploy | review ": {
1082
1082
  "allow_failure": false,
1083
1083
  "environment": {
1084
- "auto_stop_in": "2 week",
1084
+ "auto_stop_in": "1 week",
1085
1085
  "name": "review/some-commit/api",
1086
1086
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1087
1087
  "url": "https://api.mr1234.review.test-app.pan.panter.cloud",
@@ -1035,7 +1035,7 @@ mongodb:
1035
1035
  "web 🚀 Deploy | review ": {
1036
1036
  "allow_failure": false,
1037
1037
  "environment": {
1038
- "auto_stop_in": "2 week",
1038
+ "auto_stop_in": "1 week",
1039
1039
  "name": "review/some-commit/web",
1040
1040
  "on_stop": "web 🛑 Stop ⚠️ | review ",
1041
1041
  "url": "https://web.mr1234.review.my-app.pan.panter.cloud",
@@ -1112,7 +1112,7 @@ COPY --chown=node:node .yarn /app/.yarn",
1112
1112
  ],
1113
1113
  },
1114
1114
  "environment": {
1115
- "auto_stop_in": "2 week",
1115
+ "auto_stop_in": "1 week",
1116
1116
  "name": "review/some-commit/api",
1117
1117
  "on_stop": "api 🛑 Stop ⚠️ | review ",
1118
1118
  "url": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
@@ -758,7 +758,7 @@ COPY --chown=node:node .yarn /app/.yarn",
758
758
  ],
759
759
  },
760
760
  "environment": {
761
- "auto_stop_in": "2 week",
761
+ "auto_stop_in": "1 week",
762
762
  "name": "review/some-commit/www",
763
763
  "on_stop": "www 🛑 Stop ⚠️ | review ",
764
764
  "url": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
@@ -781,7 +781,7 @@ jobs:
781
781
  "app 🚀 Deploy | review ": {
782
782
  "allow_failure": false,
783
783
  "environment": {
784
- "auto_stop_in": "2 week",
784
+ "auto_stop_in": "1 week",
785
785
  "name": "review/some-commit/app",
786
786
  "on_stop": "app 🛑 Stop ⚠️ | review ",
787
787
  "url": "https://app.mr1234.review.test-app.pan.panter.cloud",
@@ -2880,7 +2880,7 @@ jobs:
2880
2880
  "app 🚀 Deploy | review ": {
2881
2881
  "allow_failure": false,
2882
2882
  "environment": {
2883
- "auto_stop_in": "2 week",
2883
+ "auto_stop_in": "1 week",
2884
2884
  "name": "review/some-commit/app",
2885
2885
  "on_stop": "app 🛑 Stop ⚠️ | review ",
2886
2886
  "url": "https://app.mr1234.review.test-app.pan.panter.cloud",
@@ -0,0 +1,40 @@
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
+ env: {
18
+ review: {
19
+ deploy: {
20
+ jobs: {
21
+ ["drop-db"]: {
22
+ command: [
23
+ "/bin/sh",
24
+ "-c", // in cloud run, you can't use env-vars in commands, so we have to do this trick
25
+ "mongosh \\$MONGO_URL --eval 'db.dropDatabase()'",
26
+ ],
27
+ image: "rtsp/mongosh:latest",
28
+ when: "postStop",
29
+ },
30
+ },
31
+ },
32
+ },
33
+ },
34
+ },
35
+ },
36
+ };
37
+
38
+ it("matches snapshot", async () => {
39
+ expect(await createAllPipelines(config)).toMatchSnapshot();
40
+ });
package/package.json CHANGED
@@ -52,7 +52,7 @@
52
52
  }
53
53
  ],
54
54
  "license": "MIT",
55
- "version": "1.125.1",
55
+ "version": "1.126.0",
56
56
  "scripts": {
57
57
  "build:tsc": "yarn tsc",
58
58
  "build": "yarn build:compile && yarn build:inline-variables && yarn build:bundle",
@@ -26,7 +26,7 @@ export const createDeployJob = (
26
26
 
27
27
  const autoStop =
28
28
  context.environment.envType === "review"
29
- ? "2 week"
29
+ ? "1 week"
30
30
  : context.environment.envType === "dev"
31
31
  ? "4 weeks"
32
32
  : undefined;
@@ -140,9 +140,15 @@ export const createGoogleCloudRunDeployJobs = (
140
140
  // lucky, update on the other hand accepts it... so let's just imediatly update it
141
141
 
142
142
  // also we cannot upsert a job, so we have to create it and catch the error and then update
143
+
144
+ const commandArray = Array.isArray(job.command)
145
+ ? job.command
146
+ : job.command.split(" ");
147
+
143
148
  const commonDeployArgsString = createArgsString({
144
- command: '"' + job.command.split(" ").join(",") + '"',
149
+ command: '"' + commandArray.join(",") + '"',
145
150
  ...commonDeployArgs,
151
+ image: job.image || commonDeployArgs.image,
146
152
  memory: job.memory || "512Mi",
147
153
  "task-timeout": job.timeout || "10m",
148
154
  });
@@ -161,14 +167,22 @@ export const createGoogleCloudRunDeployJobs = (
161
167
  .map(({ job, jobName }) => getJobCreateScriptsForJob(jobName, job))
162
168
  .flat();
163
169
 
164
- const getJobRunScriptForJob = (jobName: string) => {
165
- return `gcloud beta run jobs execute ${jobName} ${commonArgsString}`;
170
+ const getJobRunScriptForJob = (jobName: string, wait: boolean) => {
171
+ return `gcloud beta run jobs execute ${jobName} ${commonArgsString}${
172
+ wait ? " --wait" : ""
173
+ }`;
166
174
  };
167
175
 
168
176
  const getJobRunScripts = (when: DeployConfigCloudRunJob["when"]) =>
169
177
  jobsWithNames
170
178
  .filter(({ job }) => job.when === when)
171
- .map(({ jobName }) => getJobRunScriptForJob(jobName));
179
+ .map(({ jobName }) =>
180
+ getJobRunScriptForJob(
181
+ jobName,
182
+ // wait for completin on stop jobs, since stop will delete the jobs afterwards, so they will fail
183
+ ["preStop", "postStop"].includes(when)
184
+ )
185
+ );
172
186
 
173
187
  const getCreateScheduleScripts = () => {
174
188
  return jobsWithSchedule
@@ -253,6 +267,7 @@ export const createGoogleCloudRunDeployJobs = (
253
267
 
254
268
  const stopScripts = [
255
269
  ...gcloudServiceAccountLoginCommands(context),
270
+ ...getJobRunScripts("preStop"),
256
271
  ...(deployConfig.service !== false
257
272
  ? [`gcloud run services delete ${serviceName} ${commonArgsString}`]
258
273
  : []),
@@ -260,6 +275,7 @@ export const createGoogleCloudRunDeployJobs = (
260
275
  ([name]) =>
261
276
  `gcloud run services delete ${serviceName}-${name} ${commonArgsString}`
262
277
  ),
278
+ ...getJobRunScripts("postStop"),
263
279
  ...getDeleteSchedulesScripts(),
264
280
  ...getDeleteJobsScripts(),
265
281
  ...(deployConfig.cloudSql && deployConfig.cloudSql.deleteDatabaseOnStop
@@ -123,7 +123,12 @@ export type DeployConfigCloudRunJobBase = {
123
123
  /**
124
124
  * command
125
125
  */
126
- command: string;
126
+ command: string | string[];
127
+
128
+ /**
129
+ * custom image to use. Defaults to the image from the build
130
+ */
131
+ image?: string;
127
132
 
128
133
  /**
129
134
  * memory limit of the job, defaults to 51Mi
@@ -151,7 +156,7 @@ export type DeployConfigCloudRunJobWithSchedule =
151
156
  };
152
157
 
153
158
  export type DeployConfigCloudRunJobNormal = DeployConfigCloudRunJobBase & {
154
- when: "manual" | "preDeploy" | "postDeploy";
159
+ when: "manual" | "preDeploy" | "postDeploy" | "preStop" | "postStop";
155
160
  };
156
161
 
157
162
  export type DeployConfigCloudRunJob =