@catladder/pipeline 0.0.3 → 0.0.7
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/scripts/createSamplePipeline.d.ts +2 -0
- package/dist/scripts/createSamplePipeline.js +14 -0
- package/dist/scripts/magic/build/docker.d.ts +2 -0
- package/dist/scripts/magic/build/docker.js +68 -0
- package/dist/scripts/magic/build/index.d.ts +9 -0
- package/dist/scripts/magic/build/index.js +12 -0
- package/dist/scripts/magic/build/node.d.ts +6 -0
- package/dist/scripts/magic/build/node.js +150 -0
- package/dist/scripts/magic/build/types.d.ts +18 -0
- package/dist/scripts/magic/build/types.js +7 -0
- package/dist/scripts/magic/context/index.d.ts +3 -0
- package/dist/scripts/magic/context/index.js +122 -0
- package/dist/scripts/magic/createChildPipeline/index.d.ts +3 -0
- package/dist/scripts/magic/createChildPipeline/index.js +68 -0
- package/dist/scripts/magic/createPipeline.d.ts +14 -0
- package/dist/scripts/magic/createPipeline.js +80 -0
- package/dist/scripts/magic/deploy/index.d.ts +9 -0
- package/dist/scripts/magic/deploy/index.js +12 -0
- package/dist/scripts/magic/deploy/kubernetes.d.ts +5 -0
- package/dist/scripts/magic/deploy/kubernetes.js +62 -0
- package/dist/scripts/magic/deploy/types.d.ts +41 -0
- package/dist/scripts/magic/deploy/types.js +7 -0
- package/dist/scripts/magic/index.d.ts +2 -0
- package/dist/scripts/magic/sample-config.d.ts +3 -0
- package/dist/scripts/magic/sample-config.js +77 -0
- package/dist/scripts/magic/tests/createPipeline.test.d.ts +1 -0
- package/dist/scripts/magic/tests/createPipeline.test.js +89 -0
- package/dist/scripts/magic/types/config.d.ts +49 -0
- package/dist/scripts/magic/types/config.js +17 -0
- package/dist/scripts/magic/types/context.d.ts +19 -0
- package/dist/scripts/magic/types/context.js +2 -0
- package/dist/scripts/magic/types/gitlab-types.d.ts +57 -0
- package/dist/scripts/magic/types/gitlab-types.js +2 -0
- package/dist/scripts/magic/types/index.d.ts +3 -0
- package/dist/scripts/magic/types/index.js +15 -0
- package/dist/scripts/magic.d.ts +2 -0
- package/dist/scripts/magic.js +43 -0
- package/dist/scripts/monorepoGenerate.d.ts +2 -0
- package/dist/scripts/monorepoGenerate.js +164 -0
- package/dist/scripts/printAllValues.d.ts +2 -0
- package/dist/scripts/printAllValues.js +58 -0
- package/dist/scripts/printBuildEnv.d.ts +2 -0
- package/dist/scripts/printBuildEnv.js +77 -0
- package/dist/scripts/utils/extractAllValues.d.ts +1 -0
- package/dist/scripts/utils/extractAllValues.js +78 -0
- package/dist/scripts/utils/extractBuildEnv.d.ts +5 -0
- package/dist/scripts/utils/extractBuildEnv.js +152 -0
- package/dist/scripts/utils/extractValuesFromEnvVars.d.ts +2 -0
- package/dist/scripts/utils/extractValuesFromEnvVars.js +63 -0
- package/dist/scripts/utils/extractValuesFromMr.d.ts +2 -0
- package/dist/scripts/utils/extractValuesFromMr.js +86 -0
- package/dist/tests/extractValuesFromMr.test.d.ts +1 -0
- package/dist/tests/extractValuesFromMr.test.js +68 -0
- package/package.json +3 -2
- package/scripts/magic/build/docker.ts +2 -2
- package/scripts/magic/build/index.ts +3 -1
- package/scripts/magic/build/node.ts +26 -13
- package/scripts/magic/build/types.ts +6 -2
- package/scripts/magic/context/index.ts +127 -0
- package/scripts/magic/createChildPipeline/index.ts +5 -121
- package/scripts/magic/tests/createPipeline.test.ts +7 -7
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __assign = (this && this.__assign) || function () {
|
|
4
|
+
__assign = Object.assign || function(t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
+
t[p] = s[p];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
return __assign.apply(this, arguments);
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
24
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
25
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
26
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
|
+
function step(op) {
|
|
28
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
+
while (_) try {
|
|
30
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
|
+
switch (op[0]) {
|
|
33
|
+
case 0: case 1: t = op; break;
|
|
34
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
35
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
36
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
37
|
+
default:
|
|
38
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
39
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
40
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
41
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
42
|
+
if (t[2]) _.ops.pop();
|
|
43
|
+
_.trys.pop(); continue;
|
|
44
|
+
}
|
|
45
|
+
op = body.call(thisArg, _);
|
|
46
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
47
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
51
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
52
|
+
};
|
|
53
|
+
exports.__esModule = true;
|
|
54
|
+
var fs_1 = require("fs");
|
|
55
|
+
var path_1 = require("path");
|
|
56
|
+
var yaml_1 = require("yaml");
|
|
57
|
+
var yargs_1 = __importDefault(require("yargs"));
|
|
58
|
+
var helpers_1 = require("yargs/helpers");
|
|
59
|
+
var extractBuildEnv_1 = require("./utils/extractBuildEnv");
|
|
60
|
+
var args = yargs_1["default"](helpers_1.hideBin(process.argv)).array("env").argv;
|
|
61
|
+
var thisGitlabCi = yaml_1.parse(fs_1.readFileSync(".gitlab-ci.yml", { encoding: "utf-8" }));
|
|
62
|
+
var subcis = fs_1.readdirSync(".")
|
|
63
|
+
.filter(function (file) { return fs_1.lstatSync(file).isDirectory(); })
|
|
64
|
+
.map(function (dir) { return ({
|
|
65
|
+
dirname: dir,
|
|
66
|
+
ci: path_1.join(dir, ".gitlab-ci.yml")
|
|
67
|
+
}); })
|
|
68
|
+
.filter(function (_a) {
|
|
69
|
+
var ci = _a.ci;
|
|
70
|
+
return fs_1.existsSync(ci);
|
|
71
|
+
});
|
|
72
|
+
var makeConfig = function (_a) {
|
|
73
|
+
var subapp = _a.subapp, type = _a.type, ci = _a.ci, env = _a.env;
|
|
74
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
75
|
+
var changes, rules, _b;
|
|
76
|
+
var _c, _d;
|
|
77
|
+
return __generator(this, function (_e) {
|
|
78
|
+
switch (_e.label) {
|
|
79
|
+
case 0:
|
|
80
|
+
changes = [subapp + "/**/*"];
|
|
81
|
+
rules = [
|
|
82
|
+
// same as rules "always", but with `changes` to only trigger changed branches
|
|
83
|
+
{ "if": "$CI_COMMIT_TAG" },
|
|
84
|
+
{
|
|
85
|
+
"if": "$CI_COMMIT_MESSAGE =~ /^chore(release).*/",
|
|
86
|
+
when: "never"
|
|
87
|
+
},
|
|
88
|
+
{ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/" },
|
|
89
|
+
{
|
|
90
|
+
"if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
91
|
+
changes: changes
|
|
92
|
+
},
|
|
93
|
+
// add it manually when no changes
|
|
94
|
+
{
|
|
95
|
+
"if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
96
|
+
when: "manual"
|
|
97
|
+
},
|
|
98
|
+
{ "if": "$CI_MERGE_REQUEST_ID", changes: changes },
|
|
99
|
+
// add it manually when no changes
|
|
100
|
+
{ "if": "$CI_MERGE_REQUEST_ID", when: "manual" },
|
|
101
|
+
];
|
|
102
|
+
_c = {};
|
|
103
|
+
_b = [__assign(__assign({}, thisGitlabCi.variables), (_d = { APP_DIR: subapp, VALUES_DIR: subapp, COMPONENT_NAME: subapp, PARENT_PIPELINE_ID: "$CI_PIPELINE_ID" }, _d[type.toUpperCase() + "_ONLY"] = "1", _d))];
|
|
104
|
+
return [4 /*yield*/, extractBuildEnv_1.extractBuildEnv(subapp, env)];
|
|
105
|
+
case 1: return [2 /*return*/, (_c.variables = __assign.apply(void 0, _b.concat([(_e.sent())])),
|
|
106
|
+
_c.stage = type,
|
|
107
|
+
_c.rules = rules,
|
|
108
|
+
_c.trigger = {
|
|
109
|
+
include: ci,
|
|
110
|
+
strategy: "depend"
|
|
111
|
+
},
|
|
112
|
+
_c)];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
var generateSubPipeline = function (type, envs) { return __awaiter(void 0, void 0, void 0, function () {
|
|
118
|
+
return __generator(this, function (_a) {
|
|
119
|
+
switch (_a.label) {
|
|
120
|
+
case 0: return [4 /*yield*/, envs.reduce(function (acc, env) { return __awaiter(void 0, void 0, void 0, function () {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
return __generator(this, function (_c) {
|
|
123
|
+
switch (_c.label) {
|
|
124
|
+
case 0:
|
|
125
|
+
_a = [{}];
|
|
126
|
+
return [4 /*yield*/, acc];
|
|
127
|
+
case 1:
|
|
128
|
+
_b = [__assign.apply(void 0, _a.concat([(_c.sent())]))];
|
|
129
|
+
return [4 /*yield*/, subcis.reduce(function (inneracc, _a) {
|
|
130
|
+
var dirname = _a.dirname, ci = _a.ci;
|
|
131
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
132
|
+
var _b, _c, _d;
|
|
133
|
+
var _e;
|
|
134
|
+
return __generator(this, function (_f) {
|
|
135
|
+
switch (_f.label) {
|
|
136
|
+
case 0:
|
|
137
|
+
_b = [{}];
|
|
138
|
+
return [4 /*yield*/, inneracc];
|
|
139
|
+
case 1:
|
|
140
|
+
_c = [__assign.apply(void 0, _b.concat([(_f.sent())]))];
|
|
141
|
+
_e = {};
|
|
142
|
+
_d = env + "-" + dirname + " " + type;
|
|
143
|
+
return [4 /*yield*/, makeConfig({
|
|
144
|
+
subapp: dirname,
|
|
145
|
+
ci: ci,
|
|
146
|
+
type: type,
|
|
147
|
+
env: env
|
|
148
|
+
})];
|
|
149
|
+
case 2: return [2 /*return*/, (__assign.apply(void 0, _c.concat([(_e[_d] = _f.sent(), _e)])))];
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}, {})];
|
|
154
|
+
case 2: return [2 /*return*/, __assign.apply(void 0, _b.concat([(_c.sent())]))];
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}); }, {})];
|
|
158
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}); };
|
|
162
|
+
generateSubPipeline(args.t, args.env).then(function (p) {
|
|
163
|
+
return console.log(JSON.stringify(p, null, 2));
|
|
164
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
13
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
14
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
15
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
16
|
+
function step(op) {
|
|
17
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
18
|
+
while (_) try {
|
|
19
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
20
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
21
|
+
switch (op[0]) {
|
|
22
|
+
case 0: case 1: t = op; break;
|
|
23
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
24
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
25
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
26
|
+
default:
|
|
27
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
28
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
29
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
+
if (t[2]) _.ops.pop();
|
|
32
|
+
_.trys.pop(); continue;
|
|
33
|
+
}
|
|
34
|
+
op = body.call(thisArg, _);
|
|
35
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
exports.__esModule = true;
|
|
43
|
+
var yargs_1 = __importDefault(require("yargs"));
|
|
44
|
+
var helpers_1 = require("yargs/helpers");
|
|
45
|
+
var extractAllValues_1 = require("./utils/extractAllValues");
|
|
46
|
+
var args = yargs_1["default"](helpers_1.hideBin(process.argv)).argv;
|
|
47
|
+
extractAllValues_1.extractAllValues(args.d, args.e)
|
|
48
|
+
.then(function (values) { return __awaiter(void 0, void 0, void 0, function () {
|
|
49
|
+
var _a;
|
|
50
|
+
return __generator(this, function (_b) {
|
|
51
|
+
console.log((_a = JSON.stringify(values, null, 2)) !== null && _a !== void 0 ? _a : "");
|
|
52
|
+
return [2 /*return*/];
|
|
53
|
+
});
|
|
54
|
+
}); })["catch"](function (e) {
|
|
55
|
+
console.error("could not extract values", {
|
|
56
|
+
error: e
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
13
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
14
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
15
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
16
|
+
function step(op) {
|
|
17
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
18
|
+
while (_) try {
|
|
19
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
20
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
21
|
+
switch (op[0]) {
|
|
22
|
+
case 0: case 1: t = op; break;
|
|
23
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
24
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
25
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
26
|
+
default:
|
|
27
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
28
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
29
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
+
if (t[2]) _.ops.pop();
|
|
32
|
+
_.trys.pop(); continue;
|
|
33
|
+
}
|
|
34
|
+
op = body.call(thisArg, _);
|
|
35
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
40
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
41
|
+
if (!m) return o;
|
|
42
|
+
var i = m.call(o), r, ar = [], e;
|
|
43
|
+
try {
|
|
44
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
45
|
+
}
|
|
46
|
+
catch (error) { e = { error: error }; }
|
|
47
|
+
finally {
|
|
48
|
+
try {
|
|
49
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
50
|
+
}
|
|
51
|
+
finally { if (e) throw e.error; }
|
|
52
|
+
}
|
|
53
|
+
return ar;
|
|
54
|
+
};
|
|
55
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
56
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
57
|
+
};
|
|
58
|
+
exports.__esModule = true;
|
|
59
|
+
var lodash_1 = require("lodash");
|
|
60
|
+
var yargs_1 = __importDefault(require("yargs"));
|
|
61
|
+
var helpers_1 = require("yargs/helpers");
|
|
62
|
+
var extractBuildEnv_1 = require("./utils/extractBuildEnv");
|
|
63
|
+
var args = yargs_1["default"](helpers_1.hideBin(process.argv)).argv;
|
|
64
|
+
extractBuildEnv_1.extractBuildEnv(args.d, args.e)
|
|
65
|
+
.then(function (values) { return __awaiter(void 0, void 0, void 0, function () {
|
|
66
|
+
return __generator(this, function (_a) {
|
|
67
|
+
Object.entries(values).forEach(function (_a) {
|
|
68
|
+
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
69
|
+
return console.log(key + ": \"" + (lodash_1.isObject(value) ? JSON.stringify(value) : value) + "\"");
|
|
70
|
+
});
|
|
71
|
+
return [2 /*return*/];
|
|
72
|
+
});
|
|
73
|
+
}); })["catch"](function (e) {
|
|
74
|
+
console.error("could not extract values", {
|
|
75
|
+
error: e
|
|
76
|
+
});
|
|
77
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const extractAllValues: (appDirectory: string, env: string | null) => Promise<any>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.__esModule = true;
|
|
39
|
+
exports.extractAllValues = void 0;
|
|
40
|
+
var fs_1 = require("fs");
|
|
41
|
+
var lodash_1 = require("lodash");
|
|
42
|
+
var yaml_1 = require("yaml");
|
|
43
|
+
var extractValuesFromEnvVars_1 = require("./extractValuesFromEnvVars");
|
|
44
|
+
var extractValuesFromMr_1 = require("./extractValuesFromMr");
|
|
45
|
+
var _a = process.env, CI_PROJECT_ID = _a.CI_PROJECT_ID, CI_MERGE_REQUEST_IID = _a.CI_MERGE_REQUEST_IID;
|
|
46
|
+
var readYaml = function (path) {
|
|
47
|
+
try {
|
|
48
|
+
return yaml_1.parse(fs_1.readFileSync(path, { encoding: "utf-8" }));
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var extractAllValues = function (appDirectory, env) { return __awaiter(void 0, void 0, void 0, function () {
|
|
55
|
+
var valuesFromEnvVars, valuesDefault, valuesEnv, valuesFromMR, _a;
|
|
56
|
+
return __generator(this, function (_b) {
|
|
57
|
+
switch (_b.label) {
|
|
58
|
+
case 0:
|
|
59
|
+
valuesFromEnvVars = extractValuesFromEnvVars_1.extractValuesFromEnvVars();
|
|
60
|
+
valuesDefault = readYaml(appDirectory + "/values.yml");
|
|
61
|
+
valuesEnv = env
|
|
62
|
+
? readYaml(appDirectory + "/values-" + env + ".yml")
|
|
63
|
+
: {};
|
|
64
|
+
if (!(CI_PROJECT_ID && CI_MERGE_REQUEST_IID)) return [3 /*break*/, 2];
|
|
65
|
+
return [4 /*yield*/, extractValuesFromMr_1.extractValuesFromMr(CI_PROJECT_ID, Number(CI_MERGE_REQUEST_IID))];
|
|
66
|
+
case 1:
|
|
67
|
+
_a = _b.sent();
|
|
68
|
+
return [3 /*break*/, 3];
|
|
69
|
+
case 2:
|
|
70
|
+
_a = {};
|
|
71
|
+
_b.label = 3;
|
|
72
|
+
case 3:
|
|
73
|
+
valuesFromMR = _a;
|
|
74
|
+
return [2 /*return*/, lodash_1.merge({}, valuesFromEnvVars, valuesDefault, valuesEnv, valuesFromMR)];
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}); };
|
|
78
|
+
exports.extractAllValues = extractAllValues;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (_) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
50
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
51
|
+
if (!m) return o;
|
|
52
|
+
var i = m.call(o), r, ar = [], e;
|
|
53
|
+
try {
|
|
54
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
55
|
+
}
|
|
56
|
+
catch (error) { e = { error: error }; }
|
|
57
|
+
finally {
|
|
58
|
+
try {
|
|
59
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
60
|
+
}
|
|
61
|
+
finally { if (e) throw e.error; }
|
|
62
|
+
}
|
|
63
|
+
return ar;
|
|
64
|
+
};
|
|
65
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
66
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
67
|
+
};
|
|
68
|
+
exports.__esModule = true;
|
|
69
|
+
exports.extractBuildEnv = void 0;
|
|
70
|
+
var extractAllValues_1 = require("./extractAllValues");
|
|
71
|
+
var slugify_1 = __importDefault(require("slugify"));
|
|
72
|
+
var extractBuildEnv = function (componentName, env, visitedReferencedApps // this is just to avoid infinit recursion
|
|
73
|
+
) {
|
|
74
|
+
if (visitedReferencedApps === void 0) { visitedReferencedApps = {}; }
|
|
75
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
76
|
+
var values, _a, APP_NAME, CUSTOMER_NAME, CI_COMMIT_REF_SLUG, CI_MERGE_REQUEST_IID, CI_ENVIRONMENT_SLUG, isNotMonorepo, KUBE_APP_NAME, KUBE_APP_SLUG, CANONICAL_URL, defaultBuildEnv, publicBuildEnv, merged, fromComponents, referencedBuildEnv;
|
|
77
|
+
var _b, _c, _d, _e, _f;
|
|
78
|
+
return __generator(this, function (_g) {
|
|
79
|
+
switch (_g.label) {
|
|
80
|
+
case 0: return [4 /*yield*/, extractAllValues_1.extractAllValues(componentName, env)];
|
|
81
|
+
case 1:
|
|
82
|
+
values = _g.sent();
|
|
83
|
+
_a = process.env, APP_NAME = _a.APP_NAME, CUSTOMER_NAME = _a.CUSTOMER_NAME, CI_COMMIT_REF_SLUG = _a.CI_COMMIT_REF_SLUG, CI_MERGE_REQUEST_IID = _a.CI_MERGE_REQUEST_IID, CI_ENVIRONMENT_SLUG = _a.CI_ENVIRONMENT_SLUG;
|
|
84
|
+
isNotMonorepo = componentName === ".";
|
|
85
|
+
KUBE_APP_NAME = CI_MERGE_REQUEST_IID
|
|
86
|
+
? componentName + "-" + CI_COMMIT_REF_SLUG
|
|
87
|
+
: componentName;
|
|
88
|
+
KUBE_APP_SLUG = isNotMonorepo
|
|
89
|
+
? CI_ENVIRONMENT_SLUG
|
|
90
|
+
: slugify_1["default"](KUBE_APP_NAME);
|
|
91
|
+
CANONICAL_URL = "https://" + APP_NAME + "-" + KUBE_APP_SLUG + "." + CUSTOMER_NAME + ".panter.cloud";
|
|
92
|
+
defaultBuildEnv = {
|
|
93
|
+
KUBE_APP_NAME: KUBE_APP_NAME,
|
|
94
|
+
CANONICAL_URL: CANONICAL_URL,
|
|
95
|
+
IMAGE_PULL_SECRET: "gitlab-registry-" + componentName,
|
|
96
|
+
ROOT_URL: ((_b = values === null || values === void 0 ? void 0 : values.application) === null || _b === void 0 ? void 0 : _b.host) || CANONICAL_URL
|
|
97
|
+
};
|
|
98
|
+
publicBuildEnv = (_d = (_c = values === null || values === void 0 ? void 0 : values.buildEnv) === null || _c === void 0 ? void 0 : _c.public) !== null && _d !== void 0 ? _d : {};
|
|
99
|
+
merged = __assign(__assign({}, defaultBuildEnv), publicBuildEnv);
|
|
100
|
+
if (process.env.DEBUG) {
|
|
101
|
+
console.log({ values: values, defaultBuildEnv: defaultBuildEnv, publicBuildEnv: publicBuildEnv });
|
|
102
|
+
}
|
|
103
|
+
fromComponents = (_f = (_e = values === null || values === void 0 ? void 0 : values.buildEnv) === null || _e === void 0 ? void 0 : _e.fromComponents) !== null && _f !== void 0 ? _f : {};
|
|
104
|
+
return [4 /*yield*/, Object.entries(fromComponents).reduce(function (acc, _a) {
|
|
105
|
+
var _b = __read(_a, 2), otherApp = _b[0], mapping = _b[1];
|
|
106
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
107
|
+
var otherBuildEnv, _c, _d;
|
|
108
|
+
var _e;
|
|
109
|
+
var _f;
|
|
110
|
+
return __generator(this, function (_g) {
|
|
111
|
+
switch (_g.label) {
|
|
112
|
+
case 0:
|
|
113
|
+
if (process.env.DEBUG) {
|
|
114
|
+
console.log("extract reference build env", otherApp, mapping);
|
|
115
|
+
}
|
|
116
|
+
if (!!mapping) return [3 /*break*/, 2];
|
|
117
|
+
return [4 /*yield*/, acc];
|
|
118
|
+
case 1: return [2 /*return*/, _g.sent()];
|
|
119
|
+
case 2:
|
|
120
|
+
if (!((_f = visitedReferencedApps[otherApp]) !== null && _f !== void 0)) return [3 /*break*/, 3];
|
|
121
|
+
_c = _f;
|
|
122
|
+
return [3 /*break*/, 5];
|
|
123
|
+
case 3: return [4 /*yield*/, exports.extractBuildEnv(otherApp, env, __assign(__assign({}, visitedReferencedApps), (_e = {}, _e[componentName] = merged, _e)))];
|
|
124
|
+
case 4:
|
|
125
|
+
_c = (_g.sent());
|
|
126
|
+
_g.label = 5;
|
|
127
|
+
case 5:
|
|
128
|
+
otherBuildEnv = _c;
|
|
129
|
+
if (process.env.DEBUG) {
|
|
130
|
+
console.log({ otherBuildEnv: otherBuildEnv });
|
|
131
|
+
}
|
|
132
|
+
_d = [{}];
|
|
133
|
+
return [4 /*yield*/, acc];
|
|
134
|
+
case 6:
|
|
135
|
+
// resolve mapping
|
|
136
|
+
return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_g.sent())])), Object.entries(mapping).reduce(function (inneracc, _a) {
|
|
137
|
+
var _b;
|
|
138
|
+
var _c = __read(_a, 2), ourKey = _c[0], otherKey = _c[1];
|
|
139
|
+
return (__assign(__assign({}, inneracc), (_b = {}, _b[ourKey] = otherBuildEnv[otherKey], _b)));
|
|
140
|
+
}, {})])];
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}, {})];
|
|
145
|
+
case 2:
|
|
146
|
+
referencedBuildEnv = _g.sent();
|
|
147
|
+
return [2 /*return*/, __assign(__assign({}, merged), referencedBuildEnv)];
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
exports.extractBuildEnv = extractBuildEnv;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
4
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
5
|
+
if (!m) return o;
|
|
6
|
+
var i = m.call(o), r, ar = [], e;
|
|
7
|
+
try {
|
|
8
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
9
|
+
}
|
|
10
|
+
catch (error) { e = { error: error }; }
|
|
11
|
+
finally {
|
|
12
|
+
try {
|
|
13
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
14
|
+
}
|
|
15
|
+
finally { if (e) throw e.error; }
|
|
16
|
+
}
|
|
17
|
+
return ar;
|
|
18
|
+
};
|
|
19
|
+
var __values = (this && this.__values) || function(o) {
|
|
20
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
21
|
+
if (m) return m.call(o);
|
|
22
|
+
if (o && typeof o.length === "number") return {
|
|
23
|
+
next: function () {
|
|
24
|
+
if (o && i >= o.length) o = void 0;
|
|
25
|
+
return { value: o && o[i++], done: !o };
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
29
|
+
};
|
|
30
|
+
exports.__esModule = true;
|
|
31
|
+
exports.extractValuesFromEnvVars = void 0;
|
|
32
|
+
var lodash_1 = require("lodash");
|
|
33
|
+
var extractValuesFromEnvVars = function () {
|
|
34
|
+
var e_1, _a;
|
|
35
|
+
var values = {};
|
|
36
|
+
var PREFIX = "DEFAULT_VALUE_";
|
|
37
|
+
try {
|
|
38
|
+
for (var _b = __values(Object.entries(process.env).filter(function (_a) {
|
|
39
|
+
var _b = __read(_a, 1), key = _b[0];
|
|
40
|
+
return key.startsWith(PREFIX);
|
|
41
|
+
})), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
42
|
+
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
43
|
+
var path = key.replace(PREFIX, "").split("_");
|
|
44
|
+
var theValue = void 0;
|
|
45
|
+
try {
|
|
46
|
+
theValue = JSON.parse(value !== null && value !== void 0 ? value : "");
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
theValue = value;
|
|
50
|
+
}
|
|
51
|
+
lodash_1.set(values, path, theValue);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
55
|
+
finally {
|
|
56
|
+
try {
|
|
57
|
+
if (_c && !_c.done && (_a = _b["return"])) _a.call(_b);
|
|
58
|
+
}
|
|
59
|
+
finally { if (e_1) throw e_1.error; }
|
|
60
|
+
}
|
|
61
|
+
return values;
|
|
62
|
+
};
|
|
63
|
+
exports.extractValuesFromEnvVars = extractValuesFromEnvVars;
|