@catladder/cli 0.0.0-next-78f04d3f → 0.0.0-next-ddc387fe
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/apps/cli/src/release/changesetsReleaseJob.js +4 -0
- package/dist/apps/cli/src/release/changesetsReleaseJob.js.map +1 -1
- package/dist/apps/cli/src/release/githubQueuedRelease.js +22 -3
- package/dist/apps/cli/src/release/githubQueuedRelease.js.map +1 -1
- package/dist/apps/cli/src/release/stepSummary.d.ts +6 -0
- package/dist/apps/cli/src/release/stepSummary.js +32 -0
- package/dist/apps/cli/src/release/stepSummary.js.map +1 -0
- package/dist/bundles/catci/index.js +3 -3
- package/dist/bundles/catenv/index.js +284 -149
- package/dist/bundles/cli/index.js +284 -149
- package/dist/bundles/skills/catladder-deploys/references/deploy-types.md +1 -1
- package/dist/bundles/skills/catladder-pipelines/SKILL.md +8 -1
- package/dist/bundles/skills/catladder-releases/SKILL.md +17 -10
- package/dist/packages/bash/src/variables/VariableValueContainingReferences.d.ts +6 -0
- package/dist/packages/bash/src/variables/VariableValueContainingReferences.js +8 -0
- package/dist/packages/bash/src/variables/VariableValueContainingReferences.js.map +1 -1
- package/dist/packages/bash/src/variables/resolveAllReferences.d.ts +1 -2
- package/dist/packages/bash/src/variables/resolveAllReferences.js +4 -2
- package/dist/packages/bash/src/variables/resolveAllReferences.js.map +1 -1
- package/dist/packages/bash/src/variables/resolveAllReferencesOnce.d.ts +1 -4
- package/dist/packages/bash/src/variables/resolveAllReferencesOnce.js +4 -2
- package/dist/packages/bash/src/variables/resolveAllReferencesOnce.js.map +1 -1
- package/dist/packages/pipeline/src/backends/github/GithubBackend.js +93 -72
- package/dist/packages/pipeline/src/backends/github/GithubBackend.js.map +1 -1
- package/dist/packages/pipeline/src/backends/github/ensureImageJobs.d.ts +12 -0
- package/dist/packages/pipeline/src/backends/github/ensureImageJobs.js +40 -0
- package/dist/packages/pipeline/src/backends/github/ensureImageJobs.js.map +1 -0
- package/dist/packages/pipeline/src/backends/github/githubReleaseJobs.d.ts +17 -14
- package/dist/packages/pipeline/src/backends/github/githubReleaseJobs.js +76 -37
- package/dist/packages/pipeline/src/backends/github/githubReleaseJobs.js.map +1 -1
- package/dist/packages/pipeline/src/context/getEnvironmentVariables.js +17 -9
- package/dist/packages/pipeline/src/context/getEnvironmentVariables.js.map +1 -1
- package/dist/packages/pipeline/src/deploy/cloudRun/index.js +2 -2
- package/dist/packages/pipeline/src/deploy/cloudRun/index.js.map +1 -1
- package/dist/packages/pipeline/src/deploy/cloudRun/utils/database.d.ts +7 -9
- package/dist/packages/pipeline/src/deploy/cloudRun/utils/database.js +32 -24
- package/dist/packages/pipeline/src/deploy/cloudRun/utils/database.js.map +1 -1
- package/dist/packages/pipeline/src/deploy/index.d.ts +2 -2
- package/dist/skills/catladder-deploys/references/deploy-types.md +1 -1
- package/dist/skills/catladder-pipelines/SKILL.md +8 -1
- package/dist/skills/catladder-releases/SKILL.md +17 -10
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/release/changesetsReleaseJob.ts +6 -0
- package/src/release/githubQueuedRelease.ts +37 -3
- package/src/release/stepSummary.ts +27 -0
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGithubReleaseCheckJobs = exports.getGithubReleaseOnGreenWorkflow = exports.getGithubReleaseJobs = void 0;
|
|
3
|
+
exports.getGithubReleaseCheckJobs = exports.getGithubReleaseOnGreenWorkflow = exports.getGithubCreateReleaseWorkflow = exports.getGithubReleaseJobs = void 0;
|
|
4
4
|
const createGithubJobs_1 = require("./createGithubJobs");
|
|
5
|
+
const ensureImageJobs_1 = require("./ensureImageJobs");
|
|
5
6
|
const release_1 = require("../../release");
|
|
6
7
|
const shippedCatci_1 = require("../../catci/shippedCatci");
|
|
7
8
|
const CATCI = `${shippedCatci_1.GENERATED_CATCI_FOLDER}/index.js`;
|
|
9
|
+
/**
|
|
10
|
+
* the build job of the release image only — the create-release
|
|
11
|
+
* dispatch workflow needs no other image (empty for external images)
|
|
12
|
+
*/
|
|
13
|
+
const makeReleaseImageEnsureJobs = (config, images) => {
|
|
14
|
+
const resolved = images.resolveRef({
|
|
15
|
+
catladderImage: (0, release_1.getReleaseMethod)(config).image,
|
|
16
|
+
});
|
|
17
|
+
if (!resolved.need || typeof resolved.need !== "object") {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
return (0, ensureImageJobs_1.makeEnsureImageGithubJobs)(images, { only: [resolved.need.job] });
|
|
21
|
+
};
|
|
8
22
|
const createReleaseJob = (config, images, options = {}) => {
|
|
9
23
|
var _a;
|
|
10
24
|
const method = (0, release_1.getReleaseMethod)(config);
|
|
@@ -58,6 +72,7 @@ const createReleaseJob = (config, images, options = {}) => {
|
|
|
58
72
|
{
|
|
59
73
|
name: "check main workflow",
|
|
60
74
|
id: "queue",
|
|
75
|
+
...(options.queueCheckIf ? { if: options.queueCheckIf } : {}),
|
|
61
76
|
run: `node ${CATCI} release github-queue-check`,
|
|
62
77
|
shell: "bash",
|
|
63
78
|
},
|
|
@@ -75,51 +90,75 @@ const createReleaseJob = (config, images, options = {}) => {
|
|
|
75
90
|
};
|
|
76
91
|
};
|
|
77
92
|
/**
|
|
78
|
-
* the release jobs
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* tasks workflow
|
|
83
|
-
* - otherwise (manual, the default): the release job goes to the
|
|
84
|
-
* manual tasks workflow. Its queue-check step releases right away on
|
|
85
|
-
* a green main run and otherwise queues the release for the
|
|
86
|
-
* release-on-green workflow (see getGithubReleaseOnGreenWorkflow) —
|
|
87
|
-
* the counterpart of gitlab's queue button + executor pair.
|
|
93
|
+
* the release jobs of the main-branch workflow: with releases.when ===
|
|
94
|
+
* "auto" the release runs at the end of every main workflow run.
|
|
95
|
+
* Manual releasing happens via the create-release dispatch workflow
|
|
96
|
+
* (see getGithubCreateReleaseWorkflow) instead.
|
|
88
97
|
*/
|
|
89
98
|
const getGithubReleaseJobs = (config, mainWorkflowJobIds, images) => {
|
|
90
99
|
var _a;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return {
|
|
94
|
-
main: {
|
|
95
|
-
"create-release": createReleaseJob(config, images, {
|
|
96
|
-
needs: mainWorkflowJobIds,
|
|
97
|
-
}),
|
|
98
|
-
},
|
|
99
|
-
manual: {
|
|
100
|
-
"force-create-release": createReleaseJob(config, images, {
|
|
101
|
-
extraEnv: method.forceReleaseVariables,
|
|
102
|
-
}),
|
|
103
|
-
},
|
|
104
|
-
};
|
|
100
|
+
if (((_a = config.releases) === null || _a === void 0 ? void 0 : _a.when) !== "auto") {
|
|
101
|
+
return {};
|
|
105
102
|
}
|
|
106
103
|
return {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
104
|
+
"create-release": createReleaseJob(config, images, {
|
|
105
|
+
needs: mainWorkflowJobIds,
|
|
106
|
+
}),
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
exports.getGithubReleaseJobs = getGithubReleaseJobs;
|
|
110
|
+
/**
|
|
111
|
+
* the dispatch workflow to trigger a release by hand — a first-class
|
|
112
|
+
* entry in the Actions sidebar (the counterpart of gitlab's `create
|
|
113
|
+
* release` button). Its queue-check step releases right away when the
|
|
114
|
+
* main workflow run for HEAD is green and otherwise queues the release
|
|
115
|
+
* for the release-on-green workflow. Where the release method
|
|
116
|
+
* distinguishes a force mode (e.g. changesets: release a patch bump
|
|
117
|
+
* without pending changesets), forcing is a checkbox input — a forced
|
|
118
|
+
* release skips the queue-check and releases immediately, whatever the
|
|
119
|
+
* pipeline state.
|
|
120
|
+
*/
|
|
121
|
+
const getGithubCreateReleaseWorkflow = (config, images, workflowEnv) => {
|
|
122
|
+
const method = (0, release_1.getReleaseMethod)(config);
|
|
123
|
+
const forceVariables = method.forceReleaseVariables;
|
|
124
|
+
const job = createReleaseJob(config, images, {
|
|
125
|
+
queueCheck: true,
|
|
126
|
+
...(forceVariables
|
|
127
|
+
? {
|
|
128
|
+
queueCheckIf: "${{ !inputs.force }}",
|
|
129
|
+
// only effective when the force checkbox is ticked
|
|
130
|
+
extraEnv: Object.fromEntries(Object.entries(forceVariables).map(([key, value]) => [
|
|
131
|
+
key,
|
|
132
|
+
`\${{ inputs.force && '${value}' || '' }}`,
|
|
133
|
+
])),
|
|
134
|
+
}
|
|
135
|
+
: {}),
|
|
136
|
+
});
|
|
137
|
+
return {
|
|
138
|
+
name: "🚀 catladder create release",
|
|
139
|
+
on: {
|
|
140
|
+
workflow_dispatch: forceVariables
|
|
113
141
|
? {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
142
|
+
inputs: {
|
|
143
|
+
force: {
|
|
144
|
+
description: "force: release even without pending changes (patch bump), ignoring the pipeline state",
|
|
145
|
+
required: false,
|
|
146
|
+
type: "boolean",
|
|
147
|
+
default: false,
|
|
148
|
+
},
|
|
149
|
+
},
|
|
117
150
|
}
|
|
118
|
-
: {}
|
|
151
|
+
: {},
|
|
152
|
+
},
|
|
153
|
+
permissions: { contents: "read", packages: "write" },
|
|
154
|
+
env: workflowEnv,
|
|
155
|
+
jobs: {
|
|
156
|
+
...makeReleaseImageEnsureJobs(config, images),
|
|
157
|
+
"create-release": job,
|
|
119
158
|
},
|
|
120
159
|
};
|
|
121
160
|
};
|
|
122
|
-
exports.
|
|
161
|
+
exports.getGithubCreateReleaseWorkflow = getGithubCreateReleaseWorkflow;
|
|
123
162
|
/**
|
|
124
163
|
* the release-on-green workflow (manual release mode only): runs on
|
|
125
164
|
* every completed main workflow run. A lightweight host job checks the
|
|
@@ -138,7 +177,7 @@ const getGithubReleaseOnGreenWorkflow = (config, images, mainWorkflowName, workf
|
|
|
138
177
|
return null;
|
|
139
178
|
}
|
|
140
179
|
return {
|
|
141
|
-
name: "catladder release on green",
|
|
180
|
+
name: "🛠️ catladder release on green",
|
|
142
181
|
on: {
|
|
143
182
|
workflow_run: {
|
|
144
183
|
workflows: [mainWorkflowName],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubReleaseJobs.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/githubReleaseJobs.ts"],"names":[],"mappings":";;;AACA,yDAAuD;AACvD,2CAAiD;AACjD,2DAAkE;AAIlE,MAAM,KAAK,GAAG,GAAG,qCAAsB,WAAW,CAAC;AAEnD,MAAM,gBAAgB,GAAG,CACvB,MAAc,EACd,MAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"githubReleaseJobs.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/githubReleaseJobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,9 @@ const getEnvironmentVariables = async (ctx, options = {}) => {
|
|
|
46
46
|
const additionalEnvVars = deployConfigRaw
|
|
47
47
|
? deploy_1.DEPLOY_TYPES[deployConfigRaw.type].getAdditionalEnvVars(environmentContext)
|
|
48
48
|
: {};
|
|
49
|
-
|
|
49
|
+
// deploy types provide HOSTNAME_INTERNAL as a plain string or bash
|
|
50
|
+
// expression (never containing references)
|
|
51
|
+
const HOSTNAME_INTERNAL = ((_b = additionalEnvVars.HOSTNAME_INTERNAL) !== null && _b !== void 0 ? _b : "unknown-host.example.com");
|
|
50
52
|
host = (_c = envConfigRaw === null || envConfigRaw === void 0 ? void 0 : envConfigRaw.host) !== null && _c !== void 0 ? _c : HOSTNAME_INTERNAL;
|
|
51
53
|
url = (0, bash_1.joinBashExpressions)(["https://", host]);
|
|
52
54
|
predefinedVariables = {
|
|
@@ -74,8 +76,18 @@ const getEnvironmentVariables = async (ctx, options = {}) => {
|
|
|
74
76
|
componentName: ctx.componentName,
|
|
75
77
|
}),
|
|
76
78
|
]));
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
// predefined variables may contain references too (e.g. the embedded
|
|
80
|
+
// database connection string references the component's own DB_* vars), so
|
|
81
|
+
// we resolve references over the merged map. This way public var overrides
|
|
82
|
+
// (like DB_PASSWORD: "${otherComponent:DB_PASSWORD}") are picked up by the
|
|
83
|
+
// predefined variables that reference them
|
|
84
|
+
const mergedEnvVars = {
|
|
85
|
+
...predefinedVariables,
|
|
86
|
+
...secretEnvVars,
|
|
87
|
+
...publicEnvVarsUnresolved,
|
|
88
|
+
};
|
|
89
|
+
const resolvedEnvVars = ((_g = options.shouldResolveReferences) !== null && _g !== void 0 ? _g : true)
|
|
90
|
+
? await (0, bash_3.resolveAllReferences)(mergedEnvVars, async (otherComponentName) => {
|
|
79
91
|
const { envVars: otherEnvVars } = await (0, exports.getEnvironmentVariables)({
|
|
80
92
|
...ctx,
|
|
81
93
|
componentName: otherComponentName,
|
|
@@ -84,12 +96,8 @@ const getEnvironmentVariables = async (ctx, options = {}) => {
|
|
|
84
96
|
});
|
|
85
97
|
return otherEnvVars;
|
|
86
98
|
})
|
|
87
|
-
:
|
|
88
|
-
const envVars = addIndexVar(
|
|
89
|
-
...predefinedVariables,
|
|
90
|
-
...secretEnvVars,
|
|
91
|
-
...publicEnvVars,
|
|
92
|
-
});
|
|
99
|
+
: mergedEnvVars;
|
|
100
|
+
const envVars = addIndexVar(resolvedEnvVars);
|
|
93
101
|
return {
|
|
94
102
|
envVars,
|
|
95
103
|
secretEnvVarKeys,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getEnvironmentVariables.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/context/getEnvironmentVariables.ts"],"names":[],"mappings":";;;AAAA,sCAAyC;AASzC,0CAAsD;AACtD,0CAAyD;AAEzD,0CAAoF;AACpF,0CAAuD;AACvD,mEAAgE;AAChE,mEAAgE;AAChE,iEAA8D;AAC9D,6CAIyB;AAgBzB,MAAM,0BAA0B,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC7D,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,GAAG;QAClB,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG;QAC7B,QAAQ,EAAE,GAAG,CAAC,OAAO;QACrB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAA,6CAAqB,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC,CAAC;AAYK,MAAM,uBAAuB,GAAG,KAAK,EAC1C,GAAkC,EAClC,UAAiD,EAAE,EACpB,EAAE;;IACjC,MAAM,kBAAkB,GAAG,IAAA,6CAAqB,EAAC,GAAG,CAAC,CAAC;IAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;IAC3C,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,GAC9D,kBAAkB,CAAC;IAErB,MAAM,uBAAuB,GAC3B,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IAEjD,IAAI,mBAA6D,CAAC;IAClE,IAAI,IAAmC,CAAC;IACxC,IAAI,GAAkC,CAAC;IAEvC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,cAAc,GAAsB,YAAY,CAAC;QACvD,MAAM,IAAI,GACR,cAAc,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,cAAc,CAAC,IAAI,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,mBAAmB,GAAG;YACpB,GAAG,uBAAuB;YAC1B,SAAS,EAAE,OAAO;YAClB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,iBAAiB,GAAG,eAAe;YACvC,CAAC,CAAC,qBAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACrD,kBAA2B,CAC5B;YACH,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"getEnvironmentVariables.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/context/getEnvironmentVariables.ts"],"names":[],"mappings":";;;AAAA,sCAAyC;AASzC,0CAAsD;AACtD,0CAAyD;AAEzD,0CAAoF;AACpF,0CAAuD;AACvD,mEAAgE;AAChE,mEAAgE;AAChE,iEAA8D;AAC9D,6CAIyB;AAgBzB,MAAM,0BAA0B,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC7D,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,GAAG;QAClB,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG;QAC7B,QAAQ,EAAE,GAAG,CAAC,OAAO;QACrB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAA,6CAAqB,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC,CAAC;AAYK,MAAM,uBAAuB,GAAG,KAAK,EAC1C,GAAkC,EAClC,UAAiD,EAAE,EACpB,EAAE;;IACjC,MAAM,kBAAkB,GAAG,IAAA,6CAAqB,EAAC,GAAG,CAAC,CAAC;IAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;IAC3C,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,GAC9D,kBAAkB,CAAC;IAErB,MAAM,uBAAuB,GAC3B,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IAEjD,IAAI,mBAA6D,CAAC;IAClE,IAAI,IAAmC,CAAC;IACxC,IAAI,GAAkC,CAAC;IAEvC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,cAAc,GAAsB,YAAY,CAAC;QACvD,MAAM,IAAI,GACR,cAAc,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,cAAc,CAAC,IAAI,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,mBAAmB,GAAG;YACpB,GAAG,uBAAuB;YAC1B,SAAS,EAAE,OAAO;YAClB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,iBAAiB,GAAG,eAAe;YACvC,CAAC,CAAC,qBAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACrD,kBAA2B,CAC5B;YACH,CAAC,CAAC,EAAE,CAAC;QAEP,mEAAmE;QACnE,2CAA2C;QAC3C,MAAM,iBAAiB,GAAG,CAAC,MAAA,iBAAiB,CAAC,iBAAiB,mCAC5D,0BAA0B,CAA2B,CAAC;QAExD,IAAI,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,mCAAI,iBAAiB,CAAC;QAC/C,GAAG,GAAG,IAAA,0BAAmB,EAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QAE9C,mBAAmB,GAAG;YACpB,GAAG,uBAAuB;YAC1B,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,GAAG;YACb,iBAAiB;YACjB,iBAAiB,EAAE,IAAA,0BAAmB,EAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YACvE,GAAG,iBAAiB;SACrB,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAA,MAAA,YAAY,CAAC,IAAI,0CAAE,MAAM,mCAAI,EAAE,CAAC;IAEzD,MAAM,oBAAoB,GAAG,eAAe;QAC1C,CAAC,CAAC,qBAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACrD,kBAA2B,CAC5B;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,gBAAgB,GAAmB;QACvC,GAAG,IAAA,mCAAyB,EAAC,MAAA,YAAY,CAAC,IAAI,0CAAE,MAAM,CAAC;QACvD,GAAG,oBAAoB;KACxB,CAAC;IACF,MAAM,aAAa,GAAG,IAAA,iCAAuB,EAC3C,GAAG,EACH,aAAa,EACb,gBAAgB,CACjB,CAAC;IAEF,MAAM,yBAAyB,GAAG,IAAA,yBAAe,EAAC,gBAAgB,CAAC,CAAC;IAEpE,MAAM,uBAAuB,GAAG,MAAM,CAAC,WAAW,CAChD,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC9D,GAAG;QACH,IAAA,wDAAiD,EAAC,KAAK,EAAE;YACvD,aAAa,EAAE,GAAG,CAAC,aAAa;SACjC,CAAC;KACH,CAAC,CACH,CAAC;IAEF,qEAAqE;IACrE,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,2CAA2C;IAC3C,MAAM,aAAa,GAAG;QACpB,GAAG,mBAAmB;QACtB,GAAG,aAAa;QAChB,GAAG,uBAAuB;KAC3B,CAAC;IAEF,MAAM,eAAe,GACnB,CAAC,MAAA,OAAO,CAAC,uBAAuB,mCAAI,IAAI,CAAC;QACvC,CAAC,CAAC,MAAM,IAAA,2BAAoB,EACxB,aAAa,EACb,KAAK,EAAE,kBAAkB,EAAE,EAAE;YAC3B,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,+BAAuB,EAC7D;gBACE,GAAG,GAAG;gBACN,aAAa,EAAE,kBAAkB;aAClC,EACD;gBACE,uBAAuB,EAAE,KAAK,EAAE,qFAAqF;aACtH,CACF,CAAC;YACF,OAAO,YAAY,CAAC;QACtB,CAAC,CACF;QACH,CAAC,CAAC,aAAa,CAAC;IAEpB,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAE7C,OAAO;QACL,OAAO;QACP,gBAAgB;QAChB,WAAW,EAAE;YACX,KAAK,EAAE,MAAM,IAAA,2CAAoB,EAC/B,GAAG,EACH,aAAa,EACb,CAAC,cAAc;gBACb,IAAA,+BAAuB,EAAC,cAAc,CAAC;gBACvC,cAAc,CAAC,OAAO,CAAC;gBACvB,IAAI,CACP;YACD,MAAM,EAAE,MAAM,IAAA,2CAAoB,EAChC,GAAG,EACH,aAAa,EACb,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,IAAI,CACrD;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAxIW,QAAA,uBAAuB,2BAwIlC;AAEF,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAEtD,MAAM,gBAAgB,GAAG,CAC9B,GAAW,EACX,aAAqB,EACrB,GAAW,EACX,EAAE,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAJnG,QAAA,gBAAgB,oBAIgD;AAE7E,MAAM,WAAW,GAAG,CAClB,IAAO,EAC4B,EAAE,CAAC,CAAC;IACvC,GAAG,IAAI;IACP,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACrD,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAG,CACxC,OAAyB,EACzB,GAAW,EACX,EAAE,CAAC,IAAA,wBAAgB,EAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAHzC,QAAA,0BAA0B,8BAGe"}
|
|
@@ -26,8 +26,8 @@ const getCloudSqlVariables = ({ deployConfigRaw, environmentSlugPrefix, env, com
|
|
|
26
26
|
};
|
|
27
27
|
return {
|
|
28
28
|
...dbVars,
|
|
29
|
-
DATABASE_URL: (0, database_1.getDatabaseConnectionString)(deployConfigRaw.cloudSql, dbVars).concat(additionalQueryParamsString),
|
|
30
|
-
DATABASE_JDBC_URL: (0, database_1.getDatabaseJdbcUrl)(dbVars, (_c = deployConfigRaw.cloudSql.dbConnectionStringVariablesMode) !== null && _c !== void 0 ? _c : database_1.DEFAULT_DB_VARIABLES_MODE),
|
|
29
|
+
DATABASE_URL: (0, database_1.getDatabaseConnectionString)(deployConfigRaw.cloudSql, dbVars, componentName).concat(additionalQueryParamsString),
|
|
30
|
+
DATABASE_JDBC_URL: (0, database_1.getDatabaseJdbcUrl)(dbVars, (_c = deployConfigRaw.cloudSql.dbConnectionStringVariablesMode) !== null && _c !== void 0 ? _c : database_1.DEFAULT_DB_VARIABLES_MODE, componentName),
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/deploy/cloudRun/index.ts"],"names":[],"mappings":";;;AACA,0CAAsD;AAEtD,2CAAiD;AACjD,uCAAqD;AAErD,+CAG4B;AAC5B,6CAAkD;AAClD,6CAA8D;AAC9D,uEAAwE;AACxE,+CAI0B;AAC1B,2DAAqE;AAExD,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAE5E,MAAM,oBAAoB,GAAG,CAAC,EAC5B,eAAe,EACf,qBAAqB,EACrB,GAAG,EACH,aAAa,EACb,UAAU,GAC4C,EAAE,EAAE;;IAC1D,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,IAAA,qBAAa,EAC3B,eAAe,CAAC,QAAQ,EACxB,UAAU,EACV,qBAAqB,EACrB,aAAa,CACd,CAAC;QAEF,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,CAChD,MAAA,eAAe,CAAC,QAAQ,CAAC,uBAAuB,mCAAI,EAAE,CACvD;aACE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;aACzC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,MAAM,MAAM,GAAG;YACb,kCAAkC,EAChC,eAAe,CAAC,QAAQ,CAAC,sBAAsB;YACjD,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAA,eAAe,CAAC,QAAQ,CAAC,MAAM,mCAAI,UAAU;YACtD,WAAW,EAAE,GAAG,GAAG,IAAA,0BAAgB,EAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC;SACvE,CAAC;QACF,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,IAAA,sCAA2B,EACvC,eAAe,CAAC,QAAQ,EACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/deploy/cloudRun/index.ts"],"names":[],"mappings":";;;AACA,0CAAsD;AAEtD,2CAAiD;AACjD,uCAAqD;AAErD,+CAG4B;AAC5B,6CAAkD;AAClD,6CAA8D;AAC9D,uEAAwE;AACxE,+CAI0B;AAC1B,2DAAqE;AAExD,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAE5E,MAAM,oBAAoB,GAAG,CAAC,EAC5B,eAAe,EACf,qBAAqB,EACrB,GAAG,EACH,aAAa,EACb,UAAU,GAC4C,EAAE,EAAE;;IAC1D,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,IAAA,qBAAa,EAC3B,eAAe,CAAC,QAAQ,EACxB,UAAU,EACV,qBAAqB,EACrB,aAAa,CACd,CAAC;QAEF,MAAM,2BAA2B,GAAG,MAAM,CAAC,OAAO,CAChD,MAAA,eAAe,CAAC,QAAQ,CAAC,uBAAuB,mCAAI,EAAE,CACvD;aACE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;aACzC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,MAAM,MAAM,GAAG;YACb,kCAAkC,EAChC,eAAe,CAAC,QAAQ,CAAC,sBAAsB;YACjD,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAA,eAAe,CAAC,QAAQ,CAAC,MAAM,mCAAI,UAAU;YACtD,WAAW,EAAE,GAAG,GAAG,IAAA,0BAAgB,EAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC;SACvE,CAAC;QACF,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,IAAA,sCAA2B,EACvC,eAAe,CAAC,QAAQ,EACxB,MAAM,EACN,aAAa,CACd,CAAC,MAAM,CAAC,2BAA2B,CAAC;YACrC,iBAAiB,EAAE,IAAA,6BAAkB,EACnC,MAAM,EACN,MAAA,eAAe,CAAC,QAAQ,CAAC,+BAA+B,mCACtD,oCAAyB,EAC3B,aAAa,CACd;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AACW,QAAA,sBAAsB,GACjC;IACE,IAAI,EAAE,2CAA8B;IACpC,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;YAChD,OAAO;gBACL,QAAQ,EAAE;oBACR,oBAAoB,EAAE,OAAO,KAAK,QAAQ;iBAC3C;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7B,wDAAwD;QACxD,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO;YACzB,CAAC,CAAC;gBACE;oBACE,GAAG,EAAE,qCAA6B;oBAClC,MAAM,EAAE,IAAI;iBACb;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC,QAAQ;YACrD,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;YAC1B,CAAC,CAAC,EAAE,CAAC;KACR;IACD,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5B,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QAE/D,sCAAsC;QACtC,+DAA+D;QAC/D,+DAA+D;QAC/D,qEAAqE;QACrE,2DAA2D;QAC3D,MAAM,iBAAiB,GACrB,eAAe,IAAI,OAAO,KAAK,OAAO;YACpC,CAAC,CAAC,IAAA,0BAAmB,EACjB;gBACE,QAAQ;gBACR,GAAG,IAAA,8BAAsB,EACvB,UAAU,EACV,eAAe,CAAC,SAAS,CAC1B,IAAI,eAAe,CAAC,MAAM,UAAU;aACtC,EACD,GAAG,CACJ,CAAC,WAAW,EAAE;YACjB,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,WAAW,GACf,eAAe,IAAI,eAAe,CAAC,IAAI;YACrC,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;iBACjC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;gBACpB,4BAA4B,GAAG,IAAA,gCAAuB,EAAC,IAAI,CAAC;gBAC5D,IAAA,+CAAwB,EAAC,IAAI,EAAE;oBAC7B,WAAW,EAAE,QAAQ;oBACrB,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,MAAM,EAAE,eAAe,CAAC,MAAM;iBAC/B,CAAC;aACH,CAAC,CACL;YACH,CAAC,CAAC,EAAE,CAAC;QAET,OAAO;YACL,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,oBAAoB,CAAC,GAAG,CAAC;YAC5B,GAAG,WAAW;YACd,6BAA6B,EAAE,IAAA,4CAA2B,EAAC,GAAG,CAAC;YAC/D,2BAA2B,EAAE,eAAe;gBAC1C,CAAC,CAAC,eAAe,CAAC,SAAS;gBAC3B,CAAC,CAAC,SAAS;YACb,uBAAuB,EAAE,eAAe;gBACtC,CAAC,CAAC,eAAe,CAAC,MAAM;gBACxB,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IACD,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE;;QAChC,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,MAAM,0CAAE,MAExB,CAAC;QACd,MAAM,OAAO,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC;QACtC,MAAM,aAAa,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,oBAAoB,MAAK,KAAK,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,yEAAyE;QACzE,2EAA2E;QAC3E,OAAO,IAAA,4BAAmB,EACxB,kBAAkB,EAClB,sCAAsC,CACvC,CAAC;YACA,UAAU,qCAA6B,uCAAuC;YAC9E,yEAAyE;SAC1E,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type StringOrBashExpression } from "../../../../../bash/src/index.js";
|
|
1
|
+
import { type StringOrBashExpression, type VariableValue } from "../../../../../bash/src/index.js";
|
|
2
2
|
import type { ComponentContext } from "../../../types";
|
|
3
3
|
import type { DeployConfigCloudRun, DeployConfigCloudRunCloudSql } from "../../types";
|
|
4
4
|
export declare const getDatabaseDeleteScript: (context: ComponentContext, deployConfig: DeployConfigCloudRun) => string[];
|
|
@@ -12,14 +12,12 @@ export type DBVariables = {
|
|
|
12
12
|
/**
|
|
13
13
|
* controls how variables in the connection string are handled
|
|
14
14
|
*
|
|
15
|
-
* -
|
|
16
|
-
* -
|
|
17
|
-
*
|
|
18
|
-
* We will remove the legacy mode in the future, as it is confusing. But its unclear whether its a breaking change in some edge cases
|
|
15
|
+
* - embedded (default): variables are replaced with the component's final values in the connection string. This makes the connection string usable from other components (e.g. via ${otherComponent:DATABASE_URL}) and respects overrides of DB_USER, DB_PASSWORD, etc. in vars.public (e.g. DB_PASSWORD: "${otherComponent:DB_PASSWORD}" when reusing another component's database)
|
|
16
|
+
* - legacy: variables like $DB_USER are kept as environment variable names to be expanded by the shell that consumes the string. Only correct within the component's own jobs; referencing such a connection string from another component yields the wrong values. Kept as an escape hatch, will be removed in a future major
|
|
19
17
|
*/
|
|
20
18
|
export type DBVariablesMode = "legacy" | "embedded";
|
|
21
19
|
export declare const DEFAULT_DB_VARIABLES_MODE: DBVariablesMode;
|
|
22
|
-
export declare const getDatabaseJdbcUrl: (variables: DBVariables, mode: DBVariablesMode) =>
|
|
23
|
-
export declare const getRailsDatabaseConnectionString: (variables: DBVariables, mode: DBVariablesMode) =>
|
|
24
|
-
export declare const getPrismaDatabaseConnectionString: (variables: DBVariables, mode: DBVariablesMode) =>
|
|
25
|
-
export declare const getDatabaseConnectionString: (config: DeployConfigCloudRunCloudSql, variables: DBVariables) =>
|
|
20
|
+
export declare const getDatabaseJdbcUrl: (variables: DBVariables, mode: DBVariablesMode, componentName: string) => VariableValue;
|
|
21
|
+
export declare const getRailsDatabaseConnectionString: (variables: DBVariables, mode: DBVariablesMode, componentName: string) => VariableValue;
|
|
22
|
+
export declare const getPrismaDatabaseConnectionString: (variables: DBVariables, mode: DBVariablesMode, componentName: string) => VariableValue;
|
|
23
|
+
export declare const getDatabaseConnectionString: (config: DeployConfigCloudRunCloudSql, variables: DBVariables, componentName: string) => VariableValue;
|
|
@@ -42,64 +42,72 @@ const getDatabaseCreateScript = (context, deployConfig) => {
|
|
|
42
42
|
]);
|
|
43
43
|
};
|
|
44
44
|
exports.getDatabaseCreateScript = getDatabaseCreateScript;
|
|
45
|
-
exports.DEFAULT_DB_VARIABLES_MODE = "
|
|
46
|
-
const getVariableOrValue = (key,
|
|
47
|
-
|
|
45
|
+
exports.DEFAULT_DB_VARIABLES_MODE = "embedded";
|
|
46
|
+
const getVariableOrValue = (key, mode, componentName) => {
|
|
47
|
+
// in embedded mode we reference the component's own env var, which gets
|
|
48
|
+
// resolved to its final value (including vars.public overrides) after all
|
|
49
|
+
// env vars have been merged
|
|
50
|
+
return mode === "legacy"
|
|
51
|
+
? `$${key}`
|
|
52
|
+
: new bash_1.VariableReference(componentName, key);
|
|
48
53
|
};
|
|
49
|
-
const
|
|
54
|
+
const joinDbUrlParts = (parts, mode) => mode === "legacy"
|
|
55
|
+
? (0, bash_1.joinBashExpressions)(parts)
|
|
56
|
+
: new bash_1.VariableValueContainingReferences(parts);
|
|
57
|
+
const getDatabaseJdbcUrl = (variables, mode, componentName) => {
|
|
50
58
|
const parts = [
|
|
51
59
|
"jdbc:postgresql:///",
|
|
52
|
-
getVariableOrValue("DB_NAME",
|
|
60
|
+
getVariableOrValue("DB_NAME", mode, componentName),
|
|
53
61
|
"?cloudSqlInstance=",
|
|
54
|
-
getVariableOrValue("CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
62
|
+
getVariableOrValue("CLOUD_SQL_INSTANCE_CONNECTION_NAME", mode, componentName),
|
|
55
63
|
"&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=",
|
|
56
|
-
getVariableOrValue("DB_USER",
|
|
64
|
+
getVariableOrValue("DB_USER", mode, componentName),
|
|
57
65
|
"&password=",
|
|
58
|
-
getVariableOrValue("DB_PASSWORD",
|
|
66
|
+
getVariableOrValue("DB_PASSWORD", mode, componentName),
|
|
59
67
|
];
|
|
60
|
-
return (
|
|
68
|
+
return joinDbUrlParts(parts, mode);
|
|
61
69
|
};
|
|
62
70
|
exports.getDatabaseJdbcUrl = getDatabaseJdbcUrl;
|
|
63
|
-
const getRailsDatabaseConnectionString = (variables, mode) => {
|
|
71
|
+
const getRailsDatabaseConnectionString = (variables, mode, componentName) => {
|
|
64
72
|
const parts = [
|
|
65
73
|
"postgresql://",
|
|
66
|
-
getVariableOrValue("DB_USER",
|
|
74
|
+
getVariableOrValue("DB_USER", mode, componentName),
|
|
67
75
|
":",
|
|
68
|
-
getVariableOrValue("DB_PASSWORD",
|
|
76
|
+
getVariableOrValue("DB_PASSWORD", mode, componentName),
|
|
69
77
|
"@",
|
|
70
78
|
encodeURIComponent(`/cloudsql/${variables.CLOUD_SQL_INSTANCE_CONNECTION_NAME}`),
|
|
71
79
|
"/",
|
|
72
|
-
getVariableOrValue("DB_NAME",
|
|
80
|
+
getVariableOrValue("DB_NAME", mode, componentName),
|
|
73
81
|
"?",
|
|
74
82
|
];
|
|
75
|
-
return (
|
|
83
|
+
return joinDbUrlParts(parts, mode);
|
|
76
84
|
};
|
|
77
85
|
exports.getRailsDatabaseConnectionString = getRailsDatabaseConnectionString;
|
|
78
|
-
const getPrismaDatabaseConnectionString = (variables, mode) => {
|
|
86
|
+
const getPrismaDatabaseConnectionString = (variables, mode, componentName) => {
|
|
79
87
|
const parts = [
|
|
80
88
|
"postgresql://",
|
|
81
|
-
getVariableOrValue("DB_USER",
|
|
89
|
+
getVariableOrValue("DB_USER", mode, componentName),
|
|
82
90
|
":",
|
|
83
|
-
getVariableOrValue("DB_PASSWORD",
|
|
91
|
+
getVariableOrValue("DB_PASSWORD", mode, componentName),
|
|
84
92
|
"@localhost/",
|
|
85
|
-
getVariableOrValue("DB_NAME",
|
|
93
|
+
getVariableOrValue("DB_NAME", mode, componentName),
|
|
86
94
|
"?host=/cloudsql/",
|
|
87
|
-
getVariableOrValue("CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
95
|
+
getVariableOrValue("CLOUD_SQL_INSTANCE_CONNECTION_NAME", mode, componentName),
|
|
88
96
|
];
|
|
89
|
-
return (
|
|
97
|
+
return joinDbUrlParts(parts, mode);
|
|
90
98
|
};
|
|
91
99
|
exports.getPrismaDatabaseConnectionString = getPrismaDatabaseConnectionString;
|
|
92
|
-
const getDatabaseConnectionString = (config, variables) => {
|
|
100
|
+
const getDatabaseConnectionString = (config, variables, componentName) => {
|
|
93
101
|
var _a;
|
|
94
102
|
const mode = (_a = config.dbConnectionStringVariablesMode) !== null && _a !== void 0 ? _a : exports.DEFAULT_DB_VARIABLES_MODE;
|
|
95
103
|
switch (config.dbConnectionStringFormat) {
|
|
96
104
|
case "jdbc":
|
|
97
|
-
return (0, exports.getDatabaseJdbcUrl)(variables, mode);
|
|
105
|
+
return (0, exports.getDatabaseJdbcUrl)(variables, mode, componentName);
|
|
98
106
|
case "rails":
|
|
99
|
-
return (0, exports.getRailsDatabaseConnectionString)(variables, mode);
|
|
107
|
+
return (0, exports.getRailsDatabaseConnectionString)(variables, mode, componentName);
|
|
100
108
|
default:
|
|
101
109
|
// prisma
|
|
102
|
-
return (0, exports.getPrismaDatabaseConnectionString)(variables, mode);
|
|
110
|
+
return (0, exports.getPrismaDatabaseConnectionString)(variables, mode, componentName);
|
|
103
111
|
}
|
|
104
112
|
};
|
|
105
113
|
exports.getDatabaseConnectionString = getDatabaseConnectionString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../../../../../../packages/pipeline/src/deploy/cloudRun/utils/database.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../../../../../../packages/pipeline/src/deploy/cloudRun/utils/database.ts"],"names":[],"mappings":";;;AAAA,0CAOyB;AAEzB,kDAA+E;AAMxE,MAAM,uBAAuB,GAAG,CACrC,OAAyB,EACzB,YAAkC,EACxB,EAAE;IACZ,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,GACnC,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,sHAAsH;IACtH,kCAAkC;IAClC,OAAO;QACL,2BAA2B,OAAO,MAAM;QACxC,kKAAkK;QAClK,IAAA,wBAAe,EACb,+BAA+B,OAAO,eAAe,UAAU,cAAc,SAAS,EAAE,EACxF;YACE,cAAc,EAAE,EAAE;YAClB,+DAA+D;YAC/D,8DAA8D;YAC9D,WAAW,EAAE,EAAE;SAChB,CACF;KACF,CAAC;AACJ,CAAC,CAAC;AA9BW,QAAA,uBAAuB,2BA8BlC;AAEK,MAAM,uBAAuB,GAAG,CACrC,OAAyB,EACzB,YAAkC,EACxB,EAAE;IACZ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,GACnC,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,gCAAgC;IAChC,OAAO,IAAA,8BAAqB,EAAC;QAC3B,6BAA6B;QAC7B,+BAA+B,OAAO,eAAe,UAAU,cAAc,SAAS,EAAE;KACzF,CAAC,CAAC;AACL,CAAC,CAAC;AArBW,QAAA,uBAAuB,2BAqBlC;AAiBW,QAAA,yBAAyB,GAAoB,UAAU,CAAC;AAIrE,MAAM,kBAAkB,GAAG,CACzB,GAAsB,EACtB,IAAqB,EACrB,aAAqB,EACV,EAAE;IACb,wEAAwE;IACxE,0EAA0E;IAC1E,4BAA4B;IAC5B,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,IAAI,GAAG,EAAE;QACX,CAAC,CAAC,IAAI,wBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,KAAkB,EAClB,IAAqB,EACN,EAAE,CACjB,IAAI,KAAK,QAAQ;IACf,CAAC,CAAC,IAAA,0BAAmB,EAAC,KAAiC,CAAC;IACxD,CAAC,CAAC,IAAI,wCAAiC,CAAC,KAAK,CAAC,CAAC;AAE5C,MAAM,kBAAkB,GAAG,CAChC,SAAsB,EACtB,IAAqB,EACrB,aAAqB,EACrB,EAAE;IACF,MAAM,KAAK,GAAG;QACZ,qBAAqB;QACrB,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,oBAAoB;QACpB,kBAAkB,CAChB,oCAAoC,EACpC,IAAI,EACJ,aAAa,CACd;QACD,kEAAkE;QAClE,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,YAAY;QACZ,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC;KACvD,CAAC;IAEF,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AArBW,QAAA,kBAAkB,sBAqB7B;AAEK,MAAM,gCAAgC,GAAG,CAC9C,SAAsB,EACtB,IAAqB,EACrB,aAAqB,EACrB,EAAE;IACF,MAAM,KAAK,GAAG;QACZ,eAAe;QACf,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,GAAG;QACH,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC;QACtD,GAAG;QACH,kBAAkB,CAChB,aAAa,SAAS,CAAC,kCAAkC,EAAE,CAC5D;QACD,GAAG;QACH,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,GAAG;KACJ,CAAC;IACF,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAnBW,QAAA,gCAAgC,oCAmB3C;AAEK,MAAM,iCAAiC,GAAG,CAC/C,SAAsB,EACtB,IAAqB,EACrB,aAAqB,EACrB,EAAE;IACF,MAAM,KAAK,GAAG;QACZ,eAAe;QACf,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,GAAG;QACH,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC;QACtD,aAAa;QACb,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;QAClD,kBAAkB;QAClB,kBAAkB,CAChB,oCAAoC,EACpC,IAAI,EACJ,aAAa,CACd;KACF,CAAC;IACF,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AApBW,QAAA,iCAAiC,qCAoB5C;AAEK,MAAM,2BAA2B,GAAG,CACzC,MAAoC,EACpC,SAAsB,EACtB,aAAqB,EACN,EAAE;;IACjB,MAAM,IAAI,GACR,MAAA,MAAM,CAAC,+BAA+B,mCAAI,iCAAyB,CAAC;IACtE,QAAQ,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACxC,KAAK,MAAM;YACT,OAAO,IAAA,0BAAkB,EAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5D,KAAK,OAAO;YACV,OAAO,IAAA,wCAAgC,EAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1E;YACE,SAAS;YACT,OAAO,IAAA,yCAAiC,EAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,2BAA2B,+BAgBtC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BuildConfig, SecretEnvVar } from "..";
|
|
2
|
-
import type {
|
|
2
|
+
import type { VariableValue } from "../../../bash/src/index.js";
|
|
3
3
|
import type { ComponentContext } from "../types/context";
|
|
4
4
|
import type { EnvironmentContext } from "../types/environmentContext";
|
|
5
5
|
import type { CatladderJob } from "../types/jobs";
|
|
@@ -15,7 +15,7 @@ export type DeployTypeDefinition<D extends DeployConfig> = {
|
|
|
15
15
|
jobs: (context: ComponentContext) => CatladderJob[] | Promise<CatladderJob[]>;
|
|
16
16
|
defaults: (envContext: EnvironmentContext<BuildConfig, D>) => PartialDeep<D>;
|
|
17
17
|
additionalSecretKeys: (envContext: EnvironmentContext<BuildConfig, D>) => SecretEnvVar[];
|
|
18
|
-
getAdditionalEnvVars: (envContext: EnvironmentContext<BuildConfig, D>) => Record<string,
|
|
18
|
+
getAdditionalEnvVars: (envContext: EnvironmentContext<BuildConfig, D>) => Record<string, VariableValue | undefined | null>;
|
|
19
19
|
/**
|
|
20
20
|
* script lines the deploy type contributes to the start of the verify job,
|
|
21
21
|
* e.g. to authenticate against a non-public service
|
|
@@ -43,7 +43,7 @@ resources with `yarn catladder project setup`; detect drift with
|
|
|
43
43
|
- `additionalServices?: Record<string, service | false | null>`.
|
|
44
44
|
- `jobs?: Record<string, DeployConfigCloudRunJob | false | null>` — `{ command, args?, image?, cpu?, memory? (512Mi), timeout? (10min), parallelism? (1), maxRetries? (0) }`. The per-job `when`/`schedule`/`waitForCompletion` fields are **deprecated** — use `execute`.
|
|
45
45
|
- `workerPools?: Record<string, DeployConfigCloudRunWorkerPool | false | null>` — always-on background work, no endpoint, no autoscaling: `{ command, instances? (1), cpu?, memory?, image?, args?, gpu?/gpuType? }`.
|
|
46
|
-
- `cloudSql?: DeployConfigCloudRunCloudSql | false` — `{ type: "unmanaged", instanceConnectionName, dbUser?, dbNamePrefix?, dbBaseName?, deleteDatabaseOnStop?, dbConnectionStringFormat? ("prisma" default | "rails" | "jdbc"), dbConnectionStringVariablesMode? ("
|
|
46
|
+
- `cloudSql?: DeployConfigCloudRunCloudSql | false` — `{ type: "unmanaged", instanceConnectionName, dbUser?, dbNamePrefix?, dbBaseName?, deleteDatabaseOnStop?, dbConnectionStringFormat? ("prisma" default | "rails" | "jdbc"), dbConnectionStringVariablesMode? ("embedded" default | "legacy"), dbAdditionalQueryParams? }`. Injects `DB_*` vars plus `DATABASE_URL`/`DATABASE_JDBC_URL`; in the default `"embedded"` mode the connection strings contain the component's final values (referenceable from other components, `vars.public` overrides of `DB_*` flow in). To share another component's database: `dbBaseName: "<owner>"` + `DB_PASSWORD: "${<owner>:DB_PASSWORD}"` in `vars.public`.
|
|
47
47
|
- `execute?: Record<string, DeployConfigCloudRunExecute | null>` — run a script / job / HTTP call at a lifecycle point (`when`: `preDeploy` | `postDeploy` | `preStop` | `postStop`) or on a `schedule`.
|
|
48
48
|
- `debug?: boolean`.
|
|
49
49
|
|
|
@@ -22,7 +22,14 @@ Generated layout:
|
|
|
22
22
|
- **GitLab**: `.gitlab-ci.yml` includes generated files from
|
|
23
23
|
`.catladder-generated/gitlab/` (one per trigger).
|
|
24
24
|
- **GitHub**: workflows in `.github/workflows/` (generated ones carry a
|
|
25
|
-
"generated by catladder" header; others are unmanaged).
|
|
25
|
+
"generated by catladder" header; others are unmanaged). Manual
|
|
26
|
+
actions are per-kind `workflow_dispatch` workflows, visually grouped
|
|
27
|
+
by their emoji prefix in the Actions sidebar: `🚀 catladder create
|
|
28
|
+
release`, `▶️ catladder deploy` (manual-gated deploys), `⏹️ catladder
|
|
29
|
+
stop`, `↩️ catladder rollback` — when all of a kind's tasks target one
|
|
30
|
+
env the name carries it (e.g. `▶️ catladder deploy prod`); otherwise
|
|
31
|
+
pick the task from the workflow's dropdown (gitlab runs these as manual jobs inside the pipeline
|
|
32
|
+
instead).
|
|
26
33
|
|
|
27
34
|
Stages: setup → test → build → deploy → verify (post-deploy checks),
|
|
28
35
|
plus stop jobs for review-app teardown.
|
|
@@ -30,19 +30,25 @@ are generated, never hand-edited.
|
|
|
30
30
|
- On GitLab the button is a quick no-op job; the actual release runs
|
|
31
31
|
in the automatic `🚀 release once pipeline succeeds` job (skipped
|
|
32
32
|
when the button was never clicked — never run it by hand).
|
|
33
|
-
- On GitHub the
|
|
33
|
+
- On GitHub, releasing is the **`🚀 catladder create release`**
|
|
34
|
+
workflow (Actions sidebar → Run workflow): it releases immediately
|
|
34
35
|
when the main workflow for HEAD is green, queues the release when
|
|
35
|
-
it is still running (the
|
|
36
|
+
it is still running (the `🛠️ catladder release on green` workflow then
|
|
36
37
|
picks it up on completion), and fails when the run concluded red.
|
|
37
38
|
- **`auto`** — the release job runs automatically on every main-branch
|
|
38
39
|
pipeline (it still no-ops when there is nothing to release).
|
|
39
40
|
|
|
40
|
-
There is always also a
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
There is always also a **force release** escape hatch that releases
|
|
42
|
+
**immediately**, ignoring the state of the pipeline: on GitLab the
|
|
43
|
+
manual `⚠️ force create release` job, on GitHub the *force* checkbox of
|
|
44
|
+
the `🚀 catladder create release` workflow. With `method: "changesets"`
|
|
45
|
+
forcing has an extra meaning: it releases **even when no changesets are
|
|
46
|
+
pending** (patch bump with a generic changelog entry) — the recovery
|
|
47
|
+
path when a change was merged without a changeset and must ship now.
|
|
48
|
+
|
|
49
|
+
On GitHub, other manual tasks are split into per-kind dispatch
|
|
50
|
+
workflows the same way (`▶️ catladder deploy`, `⏹️ catladder stop`,
|
|
51
|
+
`↩️ catladder rollback`), each with a dropdown of its tasks.
|
|
46
52
|
|
|
47
53
|
## `method` — how the version is decided
|
|
48
54
|
|
|
@@ -108,8 +114,9 @@ the `security` commands in the `catladder-cli` reference.
|
|
|
108
114
|
|
|
109
115
|
- Fails immediately on the audit → handle the security-audit gate above.
|
|
110
116
|
- `changesets` released nothing → no `.changeset/*.md` files were
|
|
111
|
-
pending. To ship anyway,
|
|
112
|
-
|
|
117
|
+
pending. To ship anyway, force the release (patch bump) — gitlab:
|
|
118
|
+
`⚠️ force create release` job, github: force checkbox — or merge an
|
|
119
|
+
MR adding a changeset describing the accumulated work.
|
|
113
120
|
- Wrong version bump → check commit types (semantic-release) or the bump
|
|
114
121
|
levels in the changeset files (changesets).
|
|
115
122
|
- Inspect the job with `yarn catladder project ci job-log` (see the
|