@catladder/pipeline 1.80.4 → 1.81.1

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.
@@ -267,7 +267,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
267
267
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=dev,env-name=dev,build-type=node --memory=512Mi",
268
268
  "set -e",
269
269
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=dev,env-name=dev,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
270
- "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=dev,env-name=dev,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
270
+ "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=dev,env-name=dev,build-type=node --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --allow-unauthenticated",
271
271
  "gcloud beta run jobs execute pan-test-app-dev-api-migration --project=google-project-id --region=europe-west6",
272
272
  "docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
273
273
  ],
@@ -1186,7 +1186,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
1186
1186
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi",
1187
1187
  "set -e",
1188
1188
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
1189
- "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
1189
+ "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --allow-unauthenticated",
1190
1190
  "gcloud beta run jobs execute pan-test-app-review-mr1234-api-migration --project=google-project-id --region=europe-west6",
1191
1191
  "docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
1192
1192
  ],
@@ -2203,7 +2203,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
2203
2203
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi",
2204
2204
  "set -e",
2205
2205
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
2206
- "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
2206
+ "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --allow-unauthenticated",
2207
2207
  "gcloud beta run jobs execute pan-test-app-prod-api-migration --project=google-project-id --region=europe-west6",
2208
2208
  "docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
2209
2209
  ],
@@ -2334,7 +2334,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
2334
2334
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi",
2335
2335
  "set -e",
2336
2336
  "gcloud beta 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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
2337
- "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
2337
+ "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/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels=customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=5 --allow-unauthenticated",
2338
2338
  "gcloud beta run jobs execute pan-test-app-stage-api-migration --project=google-project-id --region=europe-west6",
2339
2339
  "docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
2340
2340
  ],
@@ -0,0 +1,27 @@
1
+ import type { Config } from "../src";
2
+ import { createAllPipelines } from "./__utils__/helpers";
3
+
4
+ const config: Config = {
5
+ appName: "test-app",
6
+ customerName: "pan",
7
+ components: {
8
+ api: {
9
+ dir: "api",
10
+ build: {
11
+ type: "node",
12
+ },
13
+ deploy: {
14
+ type: "google-cloudrun",
15
+ projectId: "asdf",
16
+ region: "asia-east1",
17
+ service: {
18
+ allowUnauthenticated: false,
19
+ },
20
+ },
21
+ },
22
+ },
23
+ };
24
+
25
+ it("matches snapshot", async () => {
26
+ expect(await createAllPipelines(config)).toMatchSnapshot();
27
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@catladder/pipeline",
3
- "version": "1.80.4",
3
+ "version": "1.81.1",
4
4
  "scripts": {
5
5
  "build:tsc": "yarn tsc",
6
6
  "build": "yarn build:compile && yarn build:inline-variables && yarn build:bundle",
@@ -17,12 +17,9 @@ describe("resolveReferences", () => {
17
17
  FOO: "foo from frontend",
18
18
  },
19
19
  };
20
- const result = await resolveReferences(
21
- variables,
22
- async (componentName, variableName) => {
23
- return otherVariables[componentName]?.[variableName];
24
- }
25
- );
20
+ const result = await resolveReferences(variables, async (componentName) => {
21
+ return otherVariables[componentName];
22
+ });
26
23
 
27
24
  expect(result).toEqual({
28
25
  a: "hello world",
@@ -53,12 +50,9 @@ describe("resolveReferences", () => {
53
50
  FOO: "foo from api",
54
51
  },
55
52
  };
56
- const result = await resolveReferences(
57
- variables,
58
- async (componentName, variableName) => {
59
- return otherVariables[componentName]?.[variableName];
60
- }
61
- );
53
+ const result = await resolveReferences(variables, async (componentName) => {
54
+ return otherVariables[componentName];
55
+ });
62
56
 
63
57
  expect(result).toEqual({
64
58
  FOO: "hello from foo from api",
@@ -72,12 +66,9 @@ describe("resolveReferences", () => {
72
66
  b: "a not found value looks like this: '${api:FOO}'",
73
67
  };
74
68
  const otherVariables: Record<string, Record<string, string>> = {};
75
- const result = await resolveReferences(
76
- variables,
77
- async (componentName, variableName) => {
78
- return otherVariables[componentName]?.[variableName];
79
- }
80
- );
69
+ const result = await resolveReferences(variables, async (componentName) => {
70
+ return otherVariables[componentName];
71
+ });
81
72
 
82
73
  expect(result).toEqual({
83
74
  a: "hello world",
@@ -97,12 +88,9 @@ describe("resolveReferences", () => {
97
88
  FOO: "hi, ${api:FOO}",
98
89
  },
99
90
  };
100
- const result = await resolveReferences(
101
- variables,
102
- async (componentName, variableName) => {
103
- return otherVariables[componentName]?.[variableName] ?? "";
104
- }
105
- );
91
+ const result = await resolveReferences(variables, async (componentName) => {
92
+ return otherVariables[componentName];
93
+ });
106
94
 
107
95
  expect(result).toEqual({
108
96
  a: "value is hi, foo from api!",
@@ -121,12 +109,9 @@ describe("resolveReferences", () => {
121
109
  FOO: "frontend ${api:FOO}",
122
110
  },
123
111
  };
124
- const result = await resolveReferences(
125
- variables,
126
- async (componentName, variableName) => {
127
- return otherVariables[componentName]?.[variableName] ?? "";
128
- }
129
- );
112
+ const result = await resolveReferences(variables, async (componentName) => {
113
+ return otherVariables[componentName];
114
+ });
130
115
 
131
116
  expect(result).toEqual({
132
117
  a: "value is frontend api ${frontend:FOO}!",
@@ -53,7 +53,7 @@ export const getEnvironmentVariables = async (
53
53
  } else {
54
54
  const additionalEnvVars = deployConfigRaw
55
55
  ? DEPLOY_TYPES[deployConfigRaw.type].getAdditionalEnvVars(
56
- environmentContext
56
+ environmentContext as never
57
57
  )
58
58
  : {};
59
59
 
@@ -66,7 +66,9 @@ export const getEnvironmentVariables = async (
66
66
  predefinedVariables = {
67
67
  ...basePredefinedVariables,
68
68
  // Rails before 6.1 (mis)uses the `HOST` environment variable to specify the IP to bind to
69
- ...(config.components[componentName].build.type === "rails" ? {} : {HOST: host}),
69
+ ...(config.components[componentName].build.type === "rails"
70
+ ? {}
71
+ : { HOST: host }),
70
72
  ROOT_URL: url,
71
73
  ...additionalEnvVars,
72
74
  };
@@ -75,7 +77,7 @@ export const getEnvironmentVariables = async (
75
77
 
76
78
  const additionalSecretKeys = deployConfigRaw
77
79
  ? DEPLOY_TYPES[deployConfigRaw.type].additionalSecretKeys(
78
- environmentContext
80
+ environmentContext as never
79
81
  )
80
82
  : [];
81
83
 
@@ -115,7 +117,7 @@ export const getEnvironmentVariables = async (
115
117
 
116
118
  const envVars = await resolveReferences(
117
119
  envVarsRaw,
118
- async (otherComponentName, variableName, alreadyVisited) => {
120
+ async (otherComponentName, alreadyVisited) => {
119
121
  const { envVars: otherEnvVars } = await getEnvironmentVariables(
120
122
  config,
121
123
  otherComponentName,
@@ -123,7 +125,7 @@ export const getEnvironmentVariables = async (
123
125
  commitInfo,
124
126
  alreadyVisited
125
127
  );
126
- return otherEnvVars[variableName];
128
+ return otherEnvVars;
127
129
  },
128
130
  alreadyVisited
129
131
  );
@@ -7,9 +7,8 @@ export const resolveReferences = async (
7
7
  vars: Record<string, string>,
8
8
  getOtherVariables?: (
9
9
  componentName: string,
10
- variableName: string,
11
10
  alreadyVisited: Record<string, Record<string, boolean>>
12
- ) => Promise<string | null>,
11
+ ) => Promise<Record<string, string | null>>,
13
12
  alreadyVisitedBase: Record<string, Record<string, boolean>> = {}
14
13
  ) => {
15
14
  const replaceSingleValue = async (
@@ -30,10 +29,8 @@ export const resolveReferences = async (
30
29
  },
31
30
  });
32
31
  const result = componentName
33
- ? (await getOtherVariables?.(
34
- componentName,
35
- variableName,
36
- newAlreadyVisited
32
+ ? (await getOtherVariables?.(componentName, newAlreadyVisited).then(
33
+ (r) => r?.[variableName]
37
34
  )) ?? null
38
35
  : vars[variableName]; // is self reference
39
36
 
@@ -119,12 +119,17 @@ export const createGoogleCloudRunDeployJobs = (
119
119
  command: command ? '"' + command.split(" ").join(",") + '"' : undefined, // not sure if quotes are needed
120
120
  ...commonDeployArgs,
121
121
  "env-vars-file": "____envvars.yaml",
122
- "allow-unauthenticated": true,
123
122
  "min-instances": customConfig?.minInstances,
124
123
  "max-instances": customConfig?.maxInstances,
125
124
  "no-cpu-throttling": customConfig?.noCpuThrottling,
126
125
  });
127
- return `gcloud run deploy ${serviceName}${nameSuffix ?? ""} ${argsString}`;
126
+ const authenticationString =
127
+ customConfig?.allowUnauthenticated ?? true
128
+ ? "--allow-unauthenticated"
129
+ : "--no-allow-unauthenticated";
130
+ return `gcloud run deploy ${serviceName}${
131
+ nameSuffix ?? ""
132
+ } ${argsString} ${authenticationString}`;
128
133
  };
129
134
 
130
135
  const getJobCreateScriptsForJob = (
@@ -85,9 +85,14 @@ export type DeployConfigCloudRunService = {
85
85
  maxInstances?: number;
86
86
 
87
87
  /**
88
- * set to true for workers
88
+ * set to true to allways allocate cpu, e.g. for workers. Careful that this is expensive!
89
89
  */
90
90
  noCpuThrottling?: true;
91
+
92
+ /**
93
+ * whether to allow public access (defaults to true)
94
+ */
95
+ allowUnauthenticated?: boolean;
91
96
  };
92
97
 
93
98
  export type DeployConfigCloudRunJobBase = {