@catladder/cli 1.17.0 → 1.18.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.
- package/dist/apps/cli/commands/project/commandCloudSqlProxy.js +24 -19
- package/dist/apps/cli/commands/project/commandCloudSqlProxy.js.map +1 -1
- package/dist/config/getProjectConfig.d.ts +1 -0
- package/dist/config/getProjectConfig.js +13 -1
- package/dist/config/getProjectConfig.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/gitlab.d.ts +1 -0
- package/dist/utils/gitlab.js +14 -1
- package/dist/utils/gitlab.js.map +1 -1
- package/package.json +2 -2
- package/src/apps/cli/commands/project/commandCloudSqlProxy.ts +19 -6
- package/src/config/getProjectConfig.ts +13 -2
- package/src/utils/gitlab.ts +8 -0
|
@@ -40,9 +40,7 @@ var pipeline_1 = require("@catladder/pipeline");
|
|
|
40
40
|
var child_process_promise_1 = require("child-process-promise");
|
|
41
41
|
var fs_extra_1 = require("fs-extra");
|
|
42
42
|
var tmp_promise_1 = require("tmp-promise");
|
|
43
|
-
var constants_1 = require("../../../../config/constants");
|
|
44
43
|
var getProjectConfig_1 = require("../../../../config/getProjectConfig");
|
|
45
|
-
var passwordstore_1 = require("../../../../utils/passwordstore");
|
|
46
44
|
var autocompletions_1 = require("./utils/autocompletions");
|
|
47
45
|
exports["default"] = (function (vorpal) { return __awaiter(void 0, void 0, void 0, function () {
|
|
48
46
|
var _a, _b;
|
|
@@ -55,18 +53,18 @@ exports["default"] = (function (vorpal) { return __awaiter(void 0, void 0, void
|
|
|
55
53
|
return [4 /*yield*/, (0, autocompletions_1.envAndComponents)()];
|
|
56
54
|
case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])
|
|
57
55
|
.action(function (_a) {
|
|
58
|
-
var _b, _c, _d, _e
|
|
56
|
+
var _b, _c, _d, _e;
|
|
59
57
|
var envComponent = _a.envComponent;
|
|
60
58
|
return __awaiter(this, void 0, void 0, function () {
|
|
61
|
-
var
|
|
59
|
+
var _f, env, componentName, config, localPort, envVars, POSTGRESQL_PASSWORD, context, values, projectId, defaultInstanceId, instanceId, defaultRegion, region, instanceName, cloudsqlProxyCredentials;
|
|
62
60
|
var _this = this;
|
|
63
|
-
return __generator(this, function (
|
|
64
|
-
switch (
|
|
61
|
+
return __generator(this, function (_g) {
|
|
62
|
+
switch (_g.label) {
|
|
65
63
|
case 0:
|
|
66
|
-
|
|
64
|
+
_f = (0, getProjectConfig_1.parseChoice)(envComponent), env = _f.env, componentName = _f.componentName;
|
|
67
65
|
return [4 /*yield*/, (0, getProjectConfig_1.getProjectConfig)()];
|
|
68
66
|
case 1:
|
|
69
|
-
config =
|
|
67
|
+
config = _g.sent();
|
|
70
68
|
return [4 /*yield*/, this.prompt({
|
|
71
69
|
type: "number",
|
|
72
70
|
name: "localPort",
|
|
@@ -74,13 +72,14 @@ exports["default"] = (function (vorpal) { return __awaiter(void 0, void 0, void
|
|
|
74
72
|
message: "Local port: "
|
|
75
73
|
})];
|
|
76
74
|
case 2:
|
|
77
|
-
localPort = (
|
|
75
|
+
localPort = (_g.sent()).localPort;
|
|
78
76
|
return [4 /*yield*/, (0, getProjectConfig_1.getEnvVars)(this, env, componentName)];
|
|
79
77
|
case 3:
|
|
80
|
-
|
|
78
|
+
envVars = _g.sent();
|
|
79
|
+
POSTGRESQL_PASSWORD = envVars === null || envVars === void 0 ? void 0 : envVars.POSTGRESQL_PASSWORD;
|
|
81
80
|
return [4 /*yield*/, (0, getProjectConfig_1.getPipelineContextByChoice)(env, componentName)];
|
|
82
81
|
case 4:
|
|
83
|
-
context =
|
|
82
|
+
context = _g.sent();
|
|
84
83
|
if (!(0, pipeline_1.isOfDeployType)(context.componentConfig.deploy, "kubernetes")) {
|
|
85
84
|
throw new Error("currently only supported for kubernetes deployment");
|
|
86
85
|
}
|
|
@@ -90,22 +89,28 @@ exports["default"] = (function (vorpal) { return __awaiter(void 0, void 0, void
|
|
|
90
89
|
this.log("POSTGRESQL_URL=postgresql://postgres:".concat(POSTGRESQL_PASSWORD, "@localhost:").concat(localPort, "/").concat(context.environment.envVars.KUBE_APP_NAME, "?schema=public"));
|
|
91
90
|
this.log("");
|
|
92
91
|
values = context.componentConfig.deploy.values;
|
|
93
|
-
projectId = ((
|
|
94
|
-
((
|
|
92
|
+
projectId = ((_b = values === null || values === void 0 ? void 0 : values.cloudsql) === null || _b === void 0 ? void 0 : _b.projectId) ||
|
|
93
|
+
((_c = context.componentConfig.deploy.cluster) === null || _c === void 0 ? void 0 : _c.projectId);
|
|
95
94
|
defaultInstanceId = "".concat(config.customerName, "-").concat(config.appName, "-").concat(env);
|
|
96
|
-
instanceId = ((
|
|
95
|
+
instanceId = ((_d = values === null || values === void 0 ? void 0 : values.cloudsql) === null || _d === void 0 ? void 0 : _d.instanceId) || defaultInstanceId;
|
|
97
96
|
defaultRegion = "europe-west6";
|
|
98
|
-
region = ((
|
|
97
|
+
region = ((_e = values === null || values === void 0 ? void 0 : values.cloudsql) === null || _e === void 0 ? void 0 : _e.region) || defaultRegion;
|
|
99
98
|
instanceName = "".concat(projectId, ":").concat(region, ":").concat(instanceId, "=tcp:").concat(localPort);
|
|
100
|
-
return [4 /*yield*/, (0,
|
|
99
|
+
return [4 /*yield*/, (0, getProjectConfig_1.getGitlabVar)(this, env, componentName, "cloudsqlProxyCredentials")];
|
|
101
100
|
case 5:
|
|
102
|
-
|
|
101
|
+
cloudsqlProxyCredentials = _g.sent();
|
|
102
|
+
if (!cloudsqlProxyCredentials) {
|
|
103
|
+
// we store cloudsqlProxyCredentials on gitlab, but its currently get pushed via bitwarden due to legacy reasons
|
|
104
|
+
// this will be fixed with when https://git.panter.ch/catladder/catladder/-/merge_requests/32/ is merged
|
|
105
|
+
this.log("cloudsqlProxyCredentials env var missing in gitlab. Please contact gilde-ci-cd about that.");
|
|
106
|
+
throw new Error("cloudsqlProxyCredentials missing in secrets");
|
|
107
|
+
}
|
|
103
108
|
return [4 /*yield*/, (0, tmp_promise_1.withFile)(function (_a) {
|
|
104
109
|
var tmpFilePath = _a.path;
|
|
105
110
|
return __awaiter(_this, void 0, void 0, function () {
|
|
106
111
|
return __generator(this, function (_b) {
|
|
107
112
|
switch (_b.label) {
|
|
108
|
-
case 0: return [4 /*yield*/, (0, fs_extra_1.writeFile)(tmpFilePath,
|
|
113
|
+
case 0: return [4 /*yield*/, (0, fs_extra_1.writeFile)(tmpFilePath, cloudsqlProxyCredentials)];
|
|
109
114
|
case 1:
|
|
110
115
|
_b.sent();
|
|
111
116
|
return [4 /*yield*/, (0, child_process_promise_1.spawn)("cloud_sql_proxy", ["-instances", instanceName, "-credential_file", tmpFilePath], {
|
|
@@ -120,7 +125,7 @@ exports["default"] = (function (vorpal) { return __awaiter(void 0, void 0, void
|
|
|
120
125
|
});
|
|
121
126
|
})];
|
|
122
127
|
case 6:
|
|
123
|
-
|
|
128
|
+
_g.sent();
|
|
124
129
|
return [2 /*return*/];
|
|
125
130
|
}
|
|
126
131
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandCloudSqlProxy.js","sourceRoot":"","sources":["../../../../../src/apps/cli/commands/project/commandCloudSqlProxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAqD;AACrD,+DAA8C;AAC9C,qCAAqC;AACrC,2CAAuC;AAEvC,
|
|
1
|
+
{"version":3,"file":"commandCloudSqlProxy.js","sourceRoot":"","sources":["../../../../../src/apps/cli/commands/project/commandCloudSqlProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export declare const getAllComponentsWithAllEnvsHierarchical: () => Promise<{
|
|
|
19
19
|
}>;
|
|
20
20
|
export declare const getAllPipelineContexts: () => Promise<import("@catladder/pipeline").Context[]>;
|
|
21
21
|
export declare const getEnvironment: (env: string, componentName: string) => Promise<import("@catladder/pipeline").Environment>;
|
|
22
|
+
export declare const getGitlabVar: (vorpal: CommandInstance, env: string, componentName: string, variableName: string) => Promise<string>;
|
|
22
23
|
export declare const getEnvVars: (vorpal: CommandInstance, env: string, componentName: string) => Promise<{
|
|
23
24
|
[k: string]: string;
|
|
24
25
|
}>;
|
|
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
40
|
};
|
|
41
41
|
exports.__esModule = true;
|
|
42
|
-
exports.getEnvVars = exports.getEnvironment = exports.getAllPipelineContexts = exports.getAllComponentsWithAllEnvsHierarchical = exports.getAllComponentsWithAllEnvsFlat = exports.getPipelineContextByChoice = exports.parseChoice = exports.getProjectComponents = exports.getGitlabCi = exports.getGitlabCiFilePath = exports.reloadConfig = exports.getProjectConfig = void 0;
|
|
42
|
+
exports.getEnvVars = exports.getGitlabVar = exports.getEnvironment = exports.getAllPipelineContexts = exports.getAllComponentsWithAllEnvsHierarchical = exports.getAllComponentsWithAllEnvsFlat = exports.getPipelineContextByChoice = exports.parseChoice = exports.getProjectComponents = exports.getGitlabCi = exports.getGitlabCiFilePath = exports.reloadConfig = exports.getProjectConfig = void 0;
|
|
43
43
|
var pipeline_1 = require("@catladder/pipeline");
|
|
44
44
|
var gitlab_1 = require("../utils/gitlab");
|
|
45
45
|
var memoizee_1 = __importDefault(require("memoizee"));
|
|
@@ -191,6 +191,18 @@ var getEnvironment = function (env, componentName) { return __awaiter(void 0, vo
|
|
|
191
191
|
});
|
|
192
192
|
}); };
|
|
193
193
|
exports.getEnvironment = getEnvironment;
|
|
194
|
+
var getGitlabVar = function (vorpal, env, componentName, variableName) { return __awaiter(void 0, void 0, void 0, function () {
|
|
195
|
+
var rawVariableName;
|
|
196
|
+
return __generator(this, function (_a) {
|
|
197
|
+
switch (_a.label) {
|
|
198
|
+
case 0:
|
|
199
|
+
rawVariableName = (0, pipeline_1.getSecretVarName)(env, componentName, variableName);
|
|
200
|
+
return [4 /*yield*/, (0, gitlab_1.getVariableValueByRawName)(vorpal, rawVariableName)];
|
|
201
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}); };
|
|
205
|
+
exports.getGitlabVar = getGitlabVar;
|
|
194
206
|
var resolveSecrets = function (vorpal, allEnvVars) { return __awaiter(void 0, void 0, void 0, function () {
|
|
195
207
|
var allVariablesInGitlab;
|
|
196
208
|
return __generator(this, function (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getProjectConfig.js","sourceRoot":"","sources":["../../src/config/getProjectConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"getProjectConfig.js","sourceRoot":"","sources":["../../src/config/getProjectConfig.ts"],"names":[],"mappings":"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"}
|