@catladder/cli 0.0.0-main-2e3a88fa → 0.0.0-main-c28a5e64
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/setup/setupAccessTokens.js +2 -15
- package/dist/apps/cli/commands/project/setup/setupAccessTokens.js.map +1 -1
- package/dist/apps/cli/commands/project/setup/setupKubernetes.js +37 -20
- package/dist/apps/cli/commands/project/setup/setupKubernetes.js.map +1 -1
- package/dist/bundles/catenv/index.js +1 -1
- package/dist/bundles/cli/index.js +40 -36
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/apps/cli/commands/project/setup/setupAccessTokens.ts +0 -26
- package/src/apps/cli/commands/project/setup/setupKubernetes.ts +32 -1
|
@@ -43,7 +43,7 @@ exports.setupAccessTokens = void 0;
|
|
|
43
43
|
var open_1 = __importDefault(require("open"));
|
|
44
44
|
var gitlab_1 = require("../../../../../utils/gitlab");
|
|
45
45
|
var setupAccessTokens = function (instance) { return __awaiter(void 0, void 0, void 0, function () {
|
|
46
|
-
var _a, projectId, projectWebUrl, e_1, understood, GL_TOKEN
|
|
46
|
+
var _a, projectId, projectWebUrl, e_1, understood, GL_TOKEN;
|
|
47
47
|
return __generator(this, function (_b) {
|
|
48
48
|
switch (_b.label) {
|
|
49
49
|
case 0: return [4 /*yield*/, (0, gitlab_1.getProjectInfo)(instance)];
|
|
@@ -95,20 +95,7 @@ var setupAccessTokens = function (instance) { return __awaiter(void 0, void 0, v
|
|
|
95
95
|
case 7:
|
|
96
96
|
_b.sent();
|
|
97
97
|
return [3 /*break*/, 8];
|
|
98
|
-
case 8: return [
|
|
99
|
-
case 9:
|
|
100
|
-
deploy_tokens = _b.sent();
|
|
101
|
-
if (!!deploy_tokens.find(function (v) { return v.name === "gitlab-deploy-token"; })) return [3 /*break*/, 11];
|
|
102
|
-
instance.log("I will setup the 'GitLab Deploy Token', so Kubernetes can pull images from this project.");
|
|
103
|
-
return [4 /*yield*/, (0, gitlab_1.doGitlabRequest)(instance, "projects/".concat(projectId, "/deploy_tokens"), {
|
|
104
|
-
id: projectId,
|
|
105
|
-
name: "gitlab-deploy-token",
|
|
106
|
-
scopes: ["read_registry"]
|
|
107
|
-
}, "POST")];
|
|
108
|
-
case 10:
|
|
109
|
-
_b.sent();
|
|
110
|
-
_b.label = 11;
|
|
111
|
-
case 11: return [2 /*return*/];
|
|
98
|
+
case 8: return [2 /*return*/];
|
|
112
99
|
}
|
|
113
100
|
});
|
|
114
101
|
}); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupAccessTokens.js","sourceRoot":"","sources":["../../../../../../src/apps/cli/commands/project/setup/setupAccessTokens.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAwB;AAExB,sDAA8E;AAEvE,IAAM,iBAAiB,GAAG,UAAO,QAAyB;;;;oBACb,qBAAM,IAAA,uBAAc,EACpE,QAAQ,CACT,EAAA;;gBAFK,KAA4C,SAEjD,EAFW,SAAS,QAAA,EAAW,aAAa,aAAA;;;;gBAI3C,qBAAM,IAAA,wBAAe,EAAC,QAAQ,EAAE,mBAAY,SAAS,wBAAqB,CAAC,EAAA;;gBAA3E,SAA2E,CAAC;;;;gBAE5E,IAAI,GAAC,CAAC,OAAO,KAAK,WAAW,EAAE;oBAC7B,MAAM,GAAC,CAAC;iBACT;gBACD,YAAY;gBAEZ,QAAQ,CAAC,GAAG,CACV,4EAA4E,CAC7E,CAAC;gBACF,QAAQ,CAAC,GAAG,CACV,uNAAuN,CACxN,CAAC;gBACF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEI,qBAAM,QAAQ,CAAC,MAAM,CAAC;wBAC3C,SAAO,EAAE,IAAI;wBACb,OAAO,EAAE,oCAAoC;wBAC7C,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,SAAS;qBAChB,CAAC,EAAA;;gBALM,UAAU,GAAK,CAAA,SAKrB,CAAA,WALgB;gBAMlB,IAAI,CAAC,UAAU,EAAE;oBACf,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;iBACtC;gBACD,IAAA,iBAAI,EAAC,UAAG,aAAa,8BAA2B,CAAC,CAAC;gBAElD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEnB,QAAQ,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBAE9C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACE,qBAAM,QAAQ,CAAC,MAAM,CAAC;wBACzC,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,gBAAgB;qBAC1B,CAAC,EAAA;;gBAJM,QAAQ,GAAK,CAAA,SAInB,CAAA,SAJc;gBAMhB,qBAAM,IAAA,wBAAe,EACnB,QAAQ,EACR,mBAAY,SAAS,eAAY,EACjC;wBACE,GAAG,EAAE,UAAU;wBACf,KAAK,EAAE,QAAQ;wBACf,MAAM,EAAE,IAAI;qBACb,EACD,MAAM,CACP,EAAA;;gBATD,SASC,CAAC
|
|
1
|
+
{"version":3,"file":"setupAccessTokens.js","sourceRoot":"","sources":["../../../../../../src/apps/cli/commands/project/setup/setupAccessTokens.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAwB;AAExB,sDAA8E;AAEvE,IAAM,iBAAiB,GAAG,UAAO,QAAyB;;;;oBACb,qBAAM,IAAA,uBAAc,EACpE,QAAQ,CACT,EAAA;;gBAFK,KAA4C,SAEjD,EAFW,SAAS,QAAA,EAAW,aAAa,aAAA;;;;gBAI3C,qBAAM,IAAA,wBAAe,EAAC,QAAQ,EAAE,mBAAY,SAAS,wBAAqB,CAAC,EAAA;;gBAA3E,SAA2E,CAAC;;;;gBAE5E,IAAI,GAAC,CAAC,OAAO,KAAK,WAAW,EAAE;oBAC7B,MAAM,GAAC,CAAC;iBACT;gBACD,YAAY;gBAEZ,QAAQ,CAAC,GAAG,CACV,4EAA4E,CAC7E,CAAC;gBACF,QAAQ,CAAC,GAAG,CACV,uNAAuN,CACxN,CAAC;gBACF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEI,qBAAM,QAAQ,CAAC,MAAM,CAAC;wBAC3C,SAAO,EAAE,IAAI;wBACb,OAAO,EAAE,oCAAoC;wBAC7C,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,SAAS;qBAChB,CAAC,EAAA;;gBALM,UAAU,GAAK,CAAA,SAKrB,CAAA,WALgB;gBAMlB,IAAI,CAAC,UAAU,EAAE;oBACf,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;iBACtC;gBACD,IAAA,iBAAI,EAAC,UAAG,aAAa,8BAA2B,CAAC,CAAC;gBAElD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEnB,QAAQ,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBAE9C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACE,qBAAM,QAAQ,CAAC,MAAM,CAAC;wBACzC,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,gBAAgB;qBAC1B,CAAC,EAAA;;gBAJM,QAAQ,GAAK,CAAA,SAInB,CAAA,SAJc;gBAMhB,qBAAM,IAAA,wBAAe,EACnB,QAAQ,EACR,mBAAY,SAAS,eAAY,EACjC;wBACE,GAAG,EAAE,UAAU;wBACf,KAAK,EAAE,QAAQ;wBACf,MAAM,EAAE,IAAI;qBACb,EACD,MAAM,CACP,EAAA;;gBATD,SASC,CAAC;;;;;KAEL,CAAC;AArDW,QAAA,iBAAiB,qBAqD5B"}
|
|
@@ -46,7 +46,7 @@ var cluster_1 = require("../../../../../utils/cluster");
|
|
|
46
46
|
var gitlab_1 = require("../../../../../utils/gitlab");
|
|
47
47
|
var ensureNamespace_1 = __importDefault(require("../utils/ensureNamespace"));
|
|
48
48
|
var setupKubernetes = function (instance, context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
49
|
-
var deployConfig, fullName, namespace, serviceAccountName, KUBE_URL, e_1, secretName, KUBE_CA_PEM, KUBE_TOKEN, vars, missing;
|
|
49
|
+
var deployConfig, projectId, deploy_tokens, fullName, namespace, serviceAccountName, KUBE_URL, e_1, secretName, KUBE_CA_PEM, KUBE_TOKEN, vars, missing;
|
|
50
50
|
return __generator(this, function (_a) {
|
|
51
51
|
switch (_a.label) {
|
|
52
52
|
case 0:
|
|
@@ -54,15 +54,32 @@ var setupKubernetes = function (instance, context) { return __awaiter(void 0, vo
|
|
|
54
54
|
if (!(0, pipeline_1.isOfDeployType)(deployConfig, "kubernetes")) {
|
|
55
55
|
throw new Error("cannot run setupKubernetes on non-kubernetes deployments");
|
|
56
56
|
}
|
|
57
|
+
return [4 /*yield*/, (0, gitlab_1.getProjectInfo)(instance)];
|
|
58
|
+
case 1:
|
|
59
|
+
projectId = (_a.sent()).id;
|
|
60
|
+
return [4 /*yield*/, (0, gitlab_1.doGitlabRequest)(instance, "projects/".concat(projectId, "/deploy_tokens"))];
|
|
61
|
+
case 2:
|
|
62
|
+
deploy_tokens = _a.sent();
|
|
63
|
+
if (!!deploy_tokens.find(function (v) { return v.name === "gitlab-deploy-token"; })) return [3 /*break*/, 4];
|
|
64
|
+
instance.log("I will setup the 'GitLab Deploy Token', so Kubernetes can pull images from this project.");
|
|
65
|
+
return [4 /*yield*/, (0, gitlab_1.doGitlabRequest)(instance, "projects/".concat(projectId, "/deploy_tokens"), {
|
|
66
|
+
id: projectId,
|
|
67
|
+
name: "gitlab-deploy-token",
|
|
68
|
+
scopes: ["read_registry"]
|
|
69
|
+
}, "POST")];
|
|
70
|
+
case 3:
|
|
71
|
+
_a.sent();
|
|
72
|
+
_a.label = 4;
|
|
73
|
+
case 4:
|
|
57
74
|
fullName = (0, pipeline_1.getFullKubernetesClusterName)(deployConfig.cluster);
|
|
58
75
|
instance.log("cluster: ".concat(fullName));
|
|
59
76
|
return [4 /*yield*/, (0, cluster_1.connectToCluster)(fullName)];
|
|
60
|
-
case
|
|
77
|
+
case 5:
|
|
61
78
|
_a.sent();
|
|
62
79
|
instance.log("");
|
|
63
80
|
instance.log("ensuring namespace ...");
|
|
64
81
|
return [4 /*yield*/, (0, ensureNamespace_1["default"])(context)];
|
|
65
|
-
case
|
|
82
|
+
case 6:
|
|
66
83
|
namespace = _a.sent();
|
|
67
84
|
instance.log("Namespace " + namespace + " created / updated!");
|
|
68
85
|
instance.log("");
|
|
@@ -72,43 +89,43 @@ var setupKubernetes = function (instance, context) { return __awaiter(void 0, vo
|
|
|
72
89
|
instance.log("ensuring service accounts...");
|
|
73
90
|
serviceAccountName = "cl-".concat(context.componentName, "-deploy");
|
|
74
91
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("TERM=dumb kubectl cluster-info | grep -E 'Kubernetes master|Kubernetes control plane' | awk '/http/ {print $NF}'").then(function (s) { return s.stdout.trim(); })];
|
|
75
|
-
case
|
|
92
|
+
case 7:
|
|
76
93
|
KUBE_URL = _a.sent();
|
|
77
|
-
_a.label =
|
|
78
|
-
case
|
|
79
|
-
_a.trys.push([
|
|
94
|
+
_a.label = 8;
|
|
95
|
+
case 8:
|
|
96
|
+
_a.trys.push([8, 12, , 13]);
|
|
80
97
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl delete serviceaccount --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
81
|
-
case
|
|
98
|
+
case 9:
|
|
82
99
|
_a.sent();
|
|
83
100
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl delete rolebinding --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
84
|
-
case
|
|
101
|
+
case 10:
|
|
85
102
|
_a.sent();
|
|
86
103
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl delete role --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
87
|
-
case
|
|
104
|
+
case 11:
|
|
88
105
|
_a.sent();
|
|
89
|
-
return [3 /*break*/,
|
|
90
|
-
case
|
|
106
|
+
return [3 /*break*/, 13];
|
|
107
|
+
case 12:
|
|
91
108
|
e_1 = _a.sent();
|
|
92
|
-
return [3 /*break*/,
|
|
93
|
-
case
|
|
94
|
-
case
|
|
109
|
+
return [3 /*break*/, 13];
|
|
110
|
+
case 13: return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl create serviceaccount --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
111
|
+
case 14:
|
|
95
112
|
_a.sent();
|
|
96
113
|
// upsert role in the ns
|
|
97
114
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("cat <<EOF | kubectl apply -f -\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n namespace: ".concat(namespace, "\n name: ").concat(serviceAccountName, "\nrules:\n- apiGroups: [\"\", \"extensions\", \"apps\", \"networking.k8s.io\", \"batch\", \"autoscaling\", \"rbac.authorization.k8s.io\",\"snapshot.storage.k8s.io\"]\n resources: [\"deployments\", \"replicasets\", \"statefulsets\", \"pods\", \"secrets\", \"configmaps\", \"services\", \"ingresses\", \"serviceaccounts\", \"roles\", \"rolebindings\", \"jobs\", \"cronjobs\", \"horizontalpodautoscalers\", \"persistentvolumeclaims\", \"volumesnapshots\"]\n verbs: [\"*\"]\n---\nkind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: ").concat(serviceAccountName, "\n namespace: ").concat(namespace, "\nsubjects:\n - kind: ServiceAccount\n name: ").concat(serviceAccountName, "\n namespace: ").concat(namespace, "\nroleRef:\n kind: Role\n name: ").concat(serviceAccountName, "\n apiGroup: rbac.authorization.k8s.io\nEOF\n"))];
|
|
98
|
-
case
|
|
115
|
+
case 15:
|
|
99
116
|
// upsert role in the ns
|
|
100
117
|
_a.sent();
|
|
101
118
|
secretName = "".concat(serviceAccountName, "-secret");
|
|
102
119
|
// create token for the service account
|
|
103
120
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("\nkubectl apply -f - <<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n name: ".concat(secretName, "\n namespace: ").concat(namespace, "\n annotations:\n kubernetes.io/service-account.name: ").concat(serviceAccountName, "\ntype: kubernetes.io/service-account-token\nEOF\n "))];
|
|
104
|
-
case
|
|
121
|
+
case 16:
|
|
105
122
|
// create token for the service account
|
|
106
123
|
_a.sent();
|
|
107
124
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl get secret ".concat(secretName, " --namespace ").concat(namespace, " -o jsonpath=\"{['data']['ca\\.crt']}\"")).then(function (c) { return c.stdout.trim(); })];
|
|
108
|
-
case
|
|
125
|
+
case 17:
|
|
109
126
|
KUBE_CA_PEM = _a.sent();
|
|
110
127
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl get secret ".concat(secretName, " --namespace ").concat(namespace, " -o jsonpath=\"{['data']['token']}\" | base64 --decode")).then(function (c) { return c.stdout.trim(); })];
|
|
111
|
-
case
|
|
128
|
+
case 18:
|
|
112
129
|
KUBE_TOKEN = _a.sent();
|
|
113
130
|
vars = {
|
|
114
131
|
KUBE_TOKEN: KUBE_TOKEN,
|
|
@@ -128,7 +145,7 @@ var setupKubernetes = function (instance, context) { return __awaiter(void 0, vo
|
|
|
128
145
|
instance.log("pusing secrets to gitlab...");
|
|
129
146
|
return [4 /*yield*/, (0, gitlab_1.upsertAllVariables)(instance, vars, context.environment.shortName, context.componentName, false // no backup
|
|
130
147
|
)];
|
|
131
|
-
case
|
|
148
|
+
case 19:
|
|
132
149
|
_a.sent();
|
|
133
150
|
instance.log("done!");
|
|
134
151
|
return [2 /*return*/];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupKubernetes.js","sourceRoot":"","sources":["../../../../../../src/apps/cli/commands/project/setup/setupKubernetes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAG6B;AAE7B,+DAA6C;AAC7C,wDAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"setupKubernetes.js","sourceRoot":"","sources":["../../../../../../src/apps/cli/commands/project/setup/setupKubernetes.ts"],"names":[],"mappings":"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"}
|
|
@@ -40918,7 +40918,7 @@ exports.readConfigSync = readConfigSync;
|
|
|
40918
40918
|
|
|
40919
40919
|
exports.__esModule = true;
|
|
40920
40920
|
exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
|
|
40921
|
-
exports.PIPELINE_IMAGE_TAG = "main-
|
|
40921
|
+
exports.PIPELINE_IMAGE_TAG = "main-c28a5e64" || 0;
|
|
40922
40922
|
exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || 0;
|
|
40923
40923
|
|
|
40924
40924
|
/***/ }),
|
|
@@ -4915,7 +4915,7 @@ exports.setupAccessTokens = void 0;
|
|
|
4915
4915
|
var open_1 = __importDefault(__nccwpck_require__(14247));
|
|
4916
4916
|
var gitlab_1 = __nccwpck_require__(79818);
|
|
4917
4917
|
var setupAccessTokens = function (instance) { return __awaiter(void 0, void 0, void 0, function () {
|
|
4918
|
-
var _a, projectId, projectWebUrl, e_1, understood, GL_TOKEN
|
|
4918
|
+
var _a, projectId, projectWebUrl, e_1, understood, GL_TOKEN;
|
|
4919
4919
|
return __generator(this, function (_b) {
|
|
4920
4920
|
switch (_b.label) {
|
|
4921
4921
|
case 0: return [4 /*yield*/, (0, gitlab_1.getProjectInfo)(instance)];
|
|
@@ -4967,20 +4967,7 @@ var setupAccessTokens = function (instance) { return __awaiter(void 0, void 0, v
|
|
|
4967
4967
|
case 7:
|
|
4968
4968
|
_b.sent();
|
|
4969
4969
|
return [3 /*break*/, 8];
|
|
4970
|
-
case 8: return [
|
|
4971
|
-
case 9:
|
|
4972
|
-
deploy_tokens = _b.sent();
|
|
4973
|
-
if (!!deploy_tokens.find(function (v) { return v.name === "gitlab-deploy-token"; })) return [3 /*break*/, 11];
|
|
4974
|
-
instance.log("I will setup the 'GitLab Deploy Token', so Kubernetes can pull images from this project.");
|
|
4975
|
-
return [4 /*yield*/, (0, gitlab_1.doGitlabRequest)(instance, "projects/".concat(projectId, "/deploy_tokens"), {
|
|
4976
|
-
id: projectId,
|
|
4977
|
-
name: "gitlab-deploy-token",
|
|
4978
|
-
scopes: ["read_registry"]
|
|
4979
|
-
}, "POST")];
|
|
4980
|
-
case 10:
|
|
4981
|
-
_b.sent();
|
|
4982
|
-
_b.label = 11;
|
|
4983
|
-
case 11: return [2 /*return*/];
|
|
4970
|
+
case 8: return [2 /*return*/];
|
|
4984
4971
|
}
|
|
4985
4972
|
});
|
|
4986
4973
|
}); };
|
|
@@ -5254,7 +5241,7 @@ var cluster_1 = __nccwpck_require__(66894);
|
|
|
5254
5241
|
var gitlab_1 = __nccwpck_require__(79818);
|
|
5255
5242
|
var ensureNamespace_1 = __importDefault(__nccwpck_require__(99489));
|
|
5256
5243
|
var setupKubernetes = function (instance, context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5257
|
-
var deployConfig, fullName, namespace, serviceAccountName, KUBE_URL, e_1, secretName, KUBE_CA_PEM, KUBE_TOKEN, vars, missing;
|
|
5244
|
+
var deployConfig, projectId, deploy_tokens, fullName, namespace, serviceAccountName, KUBE_URL, e_1, secretName, KUBE_CA_PEM, KUBE_TOKEN, vars, missing;
|
|
5258
5245
|
return __generator(this, function (_a) {
|
|
5259
5246
|
switch (_a.label) {
|
|
5260
5247
|
case 0:
|
|
@@ -5262,15 +5249,32 @@ var setupKubernetes = function (instance, context) { return __awaiter(void 0, vo
|
|
|
5262
5249
|
if (!(0, pipeline_1.isOfDeployType)(deployConfig, "kubernetes")) {
|
|
5263
5250
|
throw new Error("cannot run setupKubernetes on non-kubernetes deployments");
|
|
5264
5251
|
}
|
|
5252
|
+
return [4 /*yield*/, (0, gitlab_1.getProjectInfo)(instance)];
|
|
5253
|
+
case 1:
|
|
5254
|
+
projectId = (_a.sent()).id;
|
|
5255
|
+
return [4 /*yield*/, (0, gitlab_1.doGitlabRequest)(instance, "projects/".concat(projectId, "/deploy_tokens"))];
|
|
5256
|
+
case 2:
|
|
5257
|
+
deploy_tokens = _a.sent();
|
|
5258
|
+
if (!!deploy_tokens.find(function (v) { return v.name === "gitlab-deploy-token"; })) return [3 /*break*/, 4];
|
|
5259
|
+
instance.log("I will setup the 'GitLab Deploy Token', so Kubernetes can pull images from this project.");
|
|
5260
|
+
return [4 /*yield*/, (0, gitlab_1.doGitlabRequest)(instance, "projects/".concat(projectId, "/deploy_tokens"), {
|
|
5261
|
+
id: projectId,
|
|
5262
|
+
name: "gitlab-deploy-token",
|
|
5263
|
+
scopes: ["read_registry"]
|
|
5264
|
+
}, "POST")];
|
|
5265
|
+
case 3:
|
|
5266
|
+
_a.sent();
|
|
5267
|
+
_a.label = 4;
|
|
5268
|
+
case 4:
|
|
5265
5269
|
fullName = (0, pipeline_1.getFullKubernetesClusterName)(deployConfig.cluster);
|
|
5266
5270
|
instance.log("cluster: ".concat(fullName));
|
|
5267
5271
|
return [4 /*yield*/, (0, cluster_1.connectToCluster)(fullName)];
|
|
5268
|
-
case
|
|
5272
|
+
case 5:
|
|
5269
5273
|
_a.sent();
|
|
5270
5274
|
instance.log("");
|
|
5271
5275
|
instance.log("ensuring namespace ...");
|
|
5272
5276
|
return [4 /*yield*/, (0, ensureNamespace_1["default"])(context)];
|
|
5273
|
-
case
|
|
5277
|
+
case 6:
|
|
5274
5278
|
namespace = _a.sent();
|
|
5275
5279
|
instance.log("Namespace " + namespace + " created / updated!");
|
|
5276
5280
|
instance.log("");
|
|
@@ -5280,43 +5284,43 @@ var setupKubernetes = function (instance, context) { return __awaiter(void 0, vo
|
|
|
5280
5284
|
instance.log("ensuring service accounts...");
|
|
5281
5285
|
serviceAccountName = "cl-".concat(context.componentName, "-deploy");
|
|
5282
5286
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("TERM=dumb kubectl cluster-info | grep -E 'Kubernetes master|Kubernetes control plane' | awk '/http/ {print $NF}'").then(function (s) { return s.stdout.trim(); })];
|
|
5283
|
-
case
|
|
5287
|
+
case 7:
|
|
5284
5288
|
KUBE_URL = _a.sent();
|
|
5285
|
-
_a.label =
|
|
5286
|
-
case
|
|
5287
|
-
_a.trys.push([
|
|
5289
|
+
_a.label = 8;
|
|
5290
|
+
case 8:
|
|
5291
|
+
_a.trys.push([8, 12, , 13]);
|
|
5288
5292
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl delete serviceaccount --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
5289
|
-
case
|
|
5293
|
+
case 9:
|
|
5290
5294
|
_a.sent();
|
|
5291
5295
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl delete rolebinding --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
5292
|
-
case
|
|
5296
|
+
case 10:
|
|
5293
5297
|
_a.sent();
|
|
5294
5298
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl delete role --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
5295
|
-
case
|
|
5299
|
+
case 11:
|
|
5296
5300
|
_a.sent();
|
|
5297
|
-
return [3 /*break*/,
|
|
5298
|
-
case
|
|
5301
|
+
return [3 /*break*/, 13];
|
|
5302
|
+
case 12:
|
|
5299
5303
|
e_1 = _a.sent();
|
|
5300
|
-
return [3 /*break*/,
|
|
5301
|
-
case
|
|
5302
|
-
case
|
|
5304
|
+
return [3 /*break*/, 13];
|
|
5305
|
+
case 13: return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl create serviceaccount --namespace ".concat(namespace, " ").concat(serviceAccountName))];
|
|
5306
|
+
case 14:
|
|
5303
5307
|
_a.sent();
|
|
5304
5308
|
// upsert role in the ns
|
|
5305
5309
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("cat <<EOF | kubectl apply -f -\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n namespace: ".concat(namespace, "\n name: ").concat(serviceAccountName, "\nrules:\n- apiGroups: [\"\", \"extensions\", \"apps\", \"networking.k8s.io\", \"batch\", \"autoscaling\", \"rbac.authorization.k8s.io\",\"snapshot.storage.k8s.io\"]\n resources: [\"deployments\", \"replicasets\", \"statefulsets\", \"pods\", \"secrets\", \"configmaps\", \"services\", \"ingresses\", \"serviceaccounts\", \"roles\", \"rolebindings\", \"jobs\", \"cronjobs\", \"horizontalpodautoscalers\", \"persistentvolumeclaims\", \"volumesnapshots\"]\n verbs: [\"*\"]\n---\nkind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: ").concat(serviceAccountName, "\n namespace: ").concat(namespace, "\nsubjects:\n - kind: ServiceAccount\n name: ").concat(serviceAccountName, "\n namespace: ").concat(namespace, "\nroleRef:\n kind: Role\n name: ").concat(serviceAccountName, "\n apiGroup: rbac.authorization.k8s.io\nEOF\n"))];
|
|
5306
|
-
case
|
|
5310
|
+
case 15:
|
|
5307
5311
|
// upsert role in the ns
|
|
5308
5312
|
_a.sent();
|
|
5309
5313
|
secretName = "".concat(serviceAccountName, "-secret");
|
|
5310
5314
|
// create token for the service account
|
|
5311
5315
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("\nkubectl apply -f - <<EOF\napiVersion: v1\nkind: Secret\nmetadata:\n name: ".concat(secretName, "\n namespace: ").concat(namespace, "\n annotations:\n kubernetes.io/service-account.name: ").concat(serviceAccountName, "\ntype: kubernetes.io/service-account-token\nEOF\n "))];
|
|
5312
|
-
case
|
|
5316
|
+
case 16:
|
|
5313
5317
|
// create token for the service account
|
|
5314
5318
|
_a.sent();
|
|
5315
5319
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl get secret ".concat(secretName, " --namespace ").concat(namespace, " -o jsonpath=\"{['data']['ca\\.crt']}\"")).then(function (c) { return c.stdout.trim(); })];
|
|
5316
|
-
case
|
|
5320
|
+
case 17:
|
|
5317
5321
|
KUBE_CA_PEM = _a.sent();
|
|
5318
5322
|
return [4 /*yield*/, (0, child_process_promise_1.exec)("kubectl get secret ".concat(secretName, " --namespace ").concat(namespace, " -o jsonpath=\"{['data']['token']}\" | base64 --decode")).then(function (c) { return c.stdout.trim(); })];
|
|
5319
|
-
case
|
|
5323
|
+
case 18:
|
|
5320
5324
|
KUBE_TOKEN = _a.sent();
|
|
5321
5325
|
vars = {
|
|
5322
5326
|
KUBE_TOKEN: KUBE_TOKEN,
|
|
@@ -5336,7 +5340,7 @@ var setupKubernetes = function (instance, context) { return __awaiter(void 0, vo
|
|
|
5336
5340
|
instance.log("pusing secrets to gitlab...");
|
|
5337
5341
|
return [4 /*yield*/, (0, gitlab_1.upsertAllVariables)(instance, vars, context.environment.shortName, context.componentName, false // no backup
|
|
5338
5342
|
)];
|
|
5339
|
-
case
|
|
5343
|
+
case 19:
|
|
5340
5344
|
_a.sent();
|
|
5341
5345
|
instance.log("done!");
|
|
5342
5346
|
return [2 /*return*/];
|
|
@@ -355848,7 +355852,7 @@ exports.readConfigSync = readConfigSync;
|
|
|
355848
355852
|
|
|
355849
355853
|
exports.__esModule = true;
|
|
355850
355854
|
exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
|
|
355851
|
-
exports.PIPELINE_IMAGE_TAG = "main-
|
|
355855
|
+
exports.PIPELINE_IMAGE_TAG = "main-c28a5e64" || 0;
|
|
355852
355856
|
exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || 0;
|
|
355853
355857
|
|
|
355854
355858
|
/***/ }),
|