@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.
- package/dist/bundles/catladder-gitlab/index.js +1 -1
- package/dist/constants.js +1 -1
- package/dist/context/__tests__/resolveReferences.test.js +15 -20
- package/dist/context/getEnvironmentVariables.js +2 -2
- package/dist/context/resolveReferences.d.ts +1 -1
- package/dist/context/resolveReferences.js +3 -1
- package/dist/deploy/cloudRun/deployJob.js +3 -3
- package/dist/deploy/types/googleCloudRun.d.ts +5 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +1572 -0
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +4 -4
- package/examples/cloud-run-non-public.ts +27 -0
- package/package.json +1 -1
- package/src/context/__tests__/resolveReferences.test.ts +15 -30
- package/src/context/getEnvironmentVariables.ts +7 -5
- package/src/context/resolveReferences.ts +3 -6
- package/src/deploy/cloudRun/deployJob.ts +7 -2
- package/src/deploy/types/googleCloudRun.ts +6 -1
|
@@ -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 --
|
|
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 --
|
|
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 --
|
|
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 --
|
|
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
|
@@ -17,12 +17,9 @@ describe("resolveReferences", () => {
|
|
|
17
17
|
FOO: "foo from frontend",
|
|
18
18
|
},
|
|
19
19
|
};
|
|
20
|
-
const result = await resolveReferences(
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
58
|
-
|
|
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
|
-
|
|
77
|
-
|
|
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
|
-
|
|
102
|
-
|
|
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
|
-
|
|
126
|
-
|
|
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"
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 = {
|