@catladder/cli 1.12.0 → 1.15.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/commandConfigSecrets.d.ts +2 -1
- package/dist/apps/cli/commands/project/commandConfigSecrets.js +54 -36
- package/dist/apps/cli/commands/project/commandConfigSecrets.js.map +1 -1
- package/dist/apps/cli/commands/project/{commandInitGitlab.d.ts → commandInitProject.old.d.ts} +0 -0
- package/dist/apps/cli/commands/project/{commandInitProject.js → commandInitProject.old.js} +1 -1
- package/dist/apps/cli/commands/project/commandInitProject.old.js.map +1 -0
- package/dist/apps/cli/commands/project/{commandInitProject.d.ts → commandSetup.d.ts} +0 -0
- package/dist/apps/cli/commands/project/{commandInitGitlab.js → commandSetup.js} +70 -19
- package/dist/apps/cli/commands/project/commandSetup.js.map +1 -0
- package/dist/apps/cli/commands/project/index.js +3 -4
- package/dist/apps/cli/commands/project/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/apps/cli/commands/project/commandConfigSecrets.ts +32 -21
- package/src/apps/cli/commands/project/{commandInitProject.ts → commandInitProject.old.ts} +0 -0
- package/src/apps/cli/commands/project/{commandInitGitlab.ts → commandSetup.ts} +56 -7
- package/src/apps/cli/commands/project/index.ts +4 -4
- package/dist/apps/cli/commands/project/commandInitGitlab.js.map +0 -1
- package/dist/apps/cli/commands/project/commandInitProject.js.map +0 -1
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"catladder": "./bin/catladder"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@catladder/pipeline": "1.
|
|
19
|
+
"@catladder/pipeline": "1.15.0",
|
|
20
20
|
"@kubernetes/client-node": "^0.16.2",
|
|
21
21
|
"child-process-promise": "^2.2.1",
|
|
22
22
|
"command-exists-promise": "^2.0.2",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"eslint": "^8.7.0",
|
|
56
56
|
"typescript": "^4.5.4"
|
|
57
57
|
},
|
|
58
|
-
"version": "1.
|
|
58
|
+
"version": "1.15.0"
|
|
59
59
|
}
|
|
@@ -138,6 +138,8 @@ const doItFor = async (
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
+
instance.log("upserting all variables, please wait...");
|
|
142
|
+
instance.log("");
|
|
141
143
|
for (const [componentName, envs] of Object.entries(envAndComponents)) {
|
|
142
144
|
for (const env of envs) {
|
|
143
145
|
await upsertAllVariables(
|
|
@@ -168,6 +170,35 @@ const doItFor = async (
|
|
|
168
170
|
);
|
|
169
171
|
}
|
|
170
172
|
}
|
|
173
|
+
instance.log("✅ " + env + ":" + componentName);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
instance.log("done! 😻");
|
|
177
|
+
instance.log("");
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export const projectConfigSecrets = async (
|
|
181
|
+
vorpal: CommandInstance,
|
|
182
|
+
envComponent?: string
|
|
183
|
+
) => {
|
|
184
|
+
if (!envComponent) {
|
|
185
|
+
const allEnvAndcomponents = await getAllComponentsWithAllEnvsHierarchical();
|
|
186
|
+
await doItFor(vorpal, allEnvAndcomponents);
|
|
187
|
+
} else {
|
|
188
|
+
const { env, componentName } = parseChoice(envComponent);
|
|
189
|
+
|
|
190
|
+
// componentName can be null. in this case, iterate over all components
|
|
191
|
+
if (!componentName) {
|
|
192
|
+
const components = await getProjectComponents();
|
|
193
|
+
await doItFor(
|
|
194
|
+
vorpal,
|
|
195
|
+
Object.fromEntries(components.map((c) => [c, [env]]))
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
if (componentName) {
|
|
199
|
+
await doItFor(vorpal, {
|
|
200
|
+
[componentName]: [env],
|
|
201
|
+
});
|
|
171
202
|
}
|
|
172
203
|
}
|
|
173
204
|
};
|
|
@@ -180,26 +211,6 @@ export default async (vorpal: Vorpal) => {
|
|
|
180
211
|
)
|
|
181
212
|
.autocomplete(await allEnvsAndAllComponents())
|
|
182
213
|
.action(async function ({ envComponent }) {
|
|
183
|
-
|
|
184
|
-
const allEnvAndcomponents =
|
|
185
|
-
await getAllComponentsWithAllEnvsHierarchical();
|
|
186
|
-
await doItFor(this, allEnvAndcomponents);
|
|
187
|
-
} else {
|
|
188
|
-
const { env, componentName } = parseChoice(envComponent);
|
|
189
|
-
|
|
190
|
-
// componentName can be null. in this case, iterate over all components
|
|
191
|
-
if (!componentName) {
|
|
192
|
-
const components = await getProjectComponents();
|
|
193
|
-
await doItFor(
|
|
194
|
-
this,
|
|
195
|
-
Object.fromEntries(components.map((c) => [c, [env]]))
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
if (componentName) {
|
|
199
|
-
await doItFor(this, {
|
|
200
|
-
[componentName]: [env],
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}
|
|
214
|
+
return await projectConfigSecrets(this, envComponent);
|
|
204
215
|
});
|
|
205
216
|
};
|
|
File without changes
|
|
@@ -13,32 +13,47 @@ import {
|
|
|
13
13
|
} from "../../../../utils/gitlab";
|
|
14
14
|
import ensureNamespace from "./utils/ensureNamespace";
|
|
15
15
|
import open from "open";
|
|
16
|
+
import { projectConfigSecrets } from "./commandConfigSecrets";
|
|
16
17
|
|
|
17
18
|
export default async (vorpal: Vorpal) =>
|
|
18
19
|
vorpal
|
|
19
20
|
.command(
|
|
20
|
-
"project-
|
|
21
|
-
"Initializes
|
|
21
|
+
"project-setup",
|
|
22
|
+
"Initializes all environments and creates requires resources, service accounts, etc."
|
|
22
23
|
)
|
|
23
24
|
.action(async function () {
|
|
24
25
|
const allContext = await getAllPipelineContexts();
|
|
25
26
|
|
|
26
27
|
for (const context of allContext) {
|
|
28
|
+
this.log("");
|
|
29
|
+
this.log(
|
|
30
|
+
"=================================================================================="
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
this.log(
|
|
34
|
+
"setting up " +
|
|
35
|
+
context.environment.shortName +
|
|
36
|
+
":" +
|
|
37
|
+
context.componentName +
|
|
38
|
+
"..."
|
|
39
|
+
);
|
|
40
|
+
this.log("");
|
|
27
41
|
const deployConfig = context.componentConfig.deploy;
|
|
28
42
|
if (isOfDeployType(deployConfig, "kubernetes")) {
|
|
29
43
|
const fullName = getFullKubernetesClusterName(deployConfig.cluster);
|
|
30
|
-
this.log(
|
|
31
|
-
`connecting ${context.environment.shortName}:${context.componentName} ${fullName}`
|
|
32
|
-
);
|
|
44
|
+
this.log(`cluster: ${fullName}`);
|
|
33
45
|
|
|
34
46
|
await connectToCluster(fullName);
|
|
35
|
-
|
|
47
|
+
this.log("");
|
|
48
|
+
this.log("ensuring namespace ...");
|
|
36
49
|
const namespace = await ensureNamespace(context);
|
|
37
|
-
|
|
50
|
+
this.log("Namespace " + namespace + " created / updated!");
|
|
51
|
+
this.log("");
|
|
38
52
|
//$.verbose = true;
|
|
39
53
|
|
|
40
54
|
// we name the service account and the role and the role binding with the same name
|
|
41
55
|
// we currently create one per component to better separate them
|
|
56
|
+
this.log("ensuring service accounts...");
|
|
42
57
|
const serviceAccountName = `cl-${context.componentName}-deploy`;
|
|
43
58
|
const KUBE_URL =
|
|
44
59
|
await $`TERM=dumb kubectl cluster-info | grep -E 'Kubernetes master|Kubernetes control plane' | awk '/http/ {print $NF}'`.then(
|
|
@@ -104,13 +119,29 @@ EOF
|
|
|
104
119
|
KUBE_URL,
|
|
105
120
|
};
|
|
106
121
|
|
|
122
|
+
this.log("service accounts created / updated!");
|
|
123
|
+
|
|
124
|
+
this.log("");
|
|
125
|
+
this.log("pusing secrets to gitlab...");
|
|
126
|
+
|
|
107
127
|
await upsertAllVariables(
|
|
108
128
|
this,
|
|
109
129
|
vars,
|
|
110
130
|
context.environment.shortName,
|
|
111
131
|
context.componentName
|
|
112
132
|
);
|
|
133
|
+
this.log("done!");
|
|
113
134
|
}
|
|
135
|
+
this.log("");
|
|
136
|
+
this.log(
|
|
137
|
+
"✅ " +
|
|
138
|
+
context.environment.shortName +
|
|
139
|
+
":" +
|
|
140
|
+
context.componentName +
|
|
141
|
+
" done!"
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
this.log("");
|
|
114
145
|
}
|
|
115
146
|
|
|
116
147
|
const { id: projectId, web_url: projectWebUrl } = await getProjectInfo(
|
|
@@ -177,12 +208,30 @@ EOF
|
|
|
177
208
|
scopes: ["read_registry"],
|
|
178
209
|
});
|
|
179
210
|
}
|
|
211
|
+
this.log();
|
|
212
|
+
const { configSecrets } = await this.prompt({
|
|
213
|
+
default: true,
|
|
214
|
+
message:
|
|
215
|
+
"Before deployments work, you need to config secrets. Do it now?",
|
|
216
|
+
name: "configSecrets",
|
|
217
|
+
type: "confirm",
|
|
218
|
+
});
|
|
219
|
+
this.log();
|
|
220
|
+
if (configSecrets) {
|
|
221
|
+
await projectConfigSecrets(this);
|
|
222
|
+
} else {
|
|
223
|
+
this.log(
|
|
224
|
+
"👆 don't forget to config secret using `project-config-secrets`"
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
this.log();
|
|
180
228
|
this.log("gitlab is ready! 🥂");
|
|
181
229
|
this.log("\n");
|
|
182
230
|
this.log("do not forget to make sure that:");
|
|
183
231
|
[
|
|
184
232
|
"you have __health route in place",
|
|
185
233
|
"lint and test are defined",
|
|
234
|
+
"secrets are configured (call project-config-secret)",
|
|
186
235
|
"eat your vegetables",
|
|
187
236
|
"be awesome 🤩",
|
|
188
237
|
].forEach((tip) => this.log(` - ${tip}`));
|
|
@@ -8,8 +8,8 @@ import commandEnvVars from "./commandEnvVars";
|
|
|
8
8
|
import commandGetMyTotalWorktime from "./commandGetMyTotalWorktime";
|
|
9
9
|
import commandGetShell from "./commandGetShell";
|
|
10
10
|
import commandGitlabCi from "./commandGitlabCi";
|
|
11
|
-
import
|
|
12
|
-
import commandInitProject from "./commandInitProject";
|
|
11
|
+
import commandSetup from "./commandSetup";
|
|
12
|
+
//import commandInitProject from "./commandInitProject.old";
|
|
13
13
|
import commandListPods from "./commandListPods";
|
|
14
14
|
import commandMigrateHelm3 from "./commandMigrateHelm3";
|
|
15
15
|
import commandNamespace from "./commandNamespace";
|
|
@@ -28,8 +28,8 @@ import commandReloadConfig from "./commandReloadConfig";
|
|
|
28
28
|
|
|
29
29
|
export default async (vorpal: Vorpal) => {
|
|
30
30
|
commandReloadConfig(vorpal);
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
commandSetup(vorpal);
|
|
32
|
+
|
|
33
33
|
commandEnvVars(vorpal);
|
|
34
34
|
|
|
35
35
|
commandNamespace(vorpal);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commandInitGitlab.js","sourceRoot":"","sources":["../../../../../src/apps/cli/commands/project/commandInitGitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commandInitProject.js","sourceRoot":"","sources":["../../../../../src/apps/cli/commands/project/commandInitProject.ts"],"names":[],"mappings":"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"}
|