@catladder/pipeline 0.0.7 → 1.0.2

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.
Files changed (211) hide show
  1. package/babel-inline.json +11 -0
  2. package/bin/catladder-gitlab.js +3 -0
  3. package/dist/build/base/constants.d.ts +7 -0
  4. package/dist/build/base/constants.js +11 -0
  5. package/dist/build/base/createBuildJob.d.ts +5 -0
  6. package/dist/build/base/createBuildJob.js +99 -0
  7. package/dist/build/docker.d.ts +5 -0
  8. package/dist/build/docker.js +95 -0
  9. package/dist/build/index.d.ts +12 -0
  10. package/dist/build/index.js +63 -0
  11. package/dist/build/node/buildJob.d.ts +3 -0
  12. package/dist/build/node/buildJob.js +97 -0
  13. package/dist/build/node/cache.d.ts +4 -0
  14. package/dist/build/node/cache.js +67 -0
  15. package/dist/build/node/constants.d.ts +6 -0
  16. package/dist/build/node/constants.js +10 -0
  17. package/dist/build/node/index.d.ts +5 -0
  18. package/dist/build/node/index.js +63 -0
  19. package/dist/build/node/meteor.d.ts +3 -0
  20. package/dist/build/node/meteor.js +103 -0
  21. package/dist/build/node/testJob.d.ts +3 -0
  22. package/dist/build/node/testJob.js +112 -0
  23. package/dist/build/node/yarn.d.ts +2 -0
  24. package/dist/build/node/yarn.js +12 -0
  25. package/dist/build/tests/storybook.test.d.ts +1 -0
  26. package/dist/build/tests/storybook.test.js +221 -0
  27. package/dist/build/types.d.ts +63 -0
  28. package/dist/build/types.js +16 -0
  29. package/dist/catladder-gitlab.d.ts +1 -0
  30. package/dist/catladder-gitlab.js +44 -0
  31. package/dist/config/configruedEnvs.d.ts +4 -0
  32. package/dist/config/configruedEnvs.js +86 -0
  33. package/dist/config/configruedEnvs.test.d.ts +1 -0
  34. package/dist/config/configruedEnvs.test.js +103 -0
  35. package/dist/config/index.d.ts +2 -0
  36. package/dist/config/index.js +24 -0
  37. package/dist/config/readConfig.d.ts +2 -0
  38. package/dist/config/readConfig.js +47 -0
  39. package/dist/constants.d.ts +2 -0
  40. package/dist/constants.js +6 -0
  41. package/dist/context/index.d.ts +5 -0
  42. package/dist/context/index.js +211 -0
  43. package/dist/defaults/index.d.ts +2 -0
  44. package/dist/defaults/index.js +8 -0
  45. package/dist/deploy/base.d.ts +9 -0
  46. package/dist/deploy/base.js +94 -0
  47. package/dist/deploy/index.d.ts +11 -0
  48. package/dist/deploy/index.js +34 -0
  49. package/dist/deploy/kubernetes/cloudsql.d.ts +6 -0
  50. package/dist/deploy/kubernetes/cloudsql.js +16 -0
  51. package/dist/deploy/kubernetes/deployJob.d.ts +3 -0
  52. package/dist/deploy/kubernetes/deployJob.js +148 -0
  53. package/dist/deploy/kubernetes/index.d.ts +1 -0
  54. package/dist/deploy/kubernetes/index.js +22 -0
  55. package/dist/deploy/kubernetes/mongodb.d.ts +15 -0
  56. package/dist/deploy/kubernetes/mongodb.js +23 -0
  57. package/dist/deploy/types.d.ts +92 -0
  58. package/dist/deploy/types.js +16 -0
  59. package/dist/index.d.ts +8 -0
  60. package/dist/index.js +36 -0
  61. package/dist/pipeline/createChildPipeline.d.ts +9 -0
  62. package/dist/pipeline/createChildPipeline.js +266 -0
  63. package/dist/pipeline/createChildPipeline.test.d.ts +1 -0
  64. package/dist/pipeline/createChildPipeline.test.js +199 -0
  65. package/dist/pipeline/createJobs.d.ts +3 -0
  66. package/dist/pipeline/createJobs.js +331 -0
  67. package/dist/pipeline/index.d.ts +2 -0
  68. package/dist/pipeline/index.js +24 -0
  69. package/dist/pipeline/yarnInfo.d.ts +2 -0
  70. package/dist/pipeline/yarnInfo.js +296 -0
  71. package/dist/rules/index.d.ts +3 -0
  72. package/dist/rules/index.js +27 -0
  73. package/dist/runner/index.d.ts +3 -0
  74. package/dist/runner/index.js +12 -0
  75. package/dist/tsconfig.tsbuildinfo +1 -0
  76. package/dist/types/config.d.ts +73 -0
  77. package/dist/types/config.js +80 -0
  78. package/dist/types/context.d.ts +36 -0
  79. package/dist/types/context.js +3 -0
  80. package/dist/types/gitlab-types.d.ts +86 -0
  81. package/dist/types/gitlab-types.js +5 -0
  82. package/dist/{scripts/magic/types → types}/index.d.ts +1 -1
  83. package/dist/types/index.js +26 -0
  84. package/dist/utils/index.d.ts +2 -0
  85. package/dist/utils/index.js +18 -0
  86. package/package.json +30 -9
  87. package/src/build/base/constants.ts +7 -0
  88. package/src/build/base/createBuildJob.ts +46 -0
  89. package/{scripts/magic → src}/build/docker.ts +15 -2
  90. package/src/build/index.ts +42 -0
  91. package/src/build/node/buildJob.ts +54 -0
  92. package/src/build/node/cache.ts +36 -0
  93. package/src/build/node/constants.ts +6 -0
  94. package/src/build/node/index.ts +17 -0
  95. package/src/build/node/meteor.ts +75 -0
  96. package/src/build/node/testJob.ts +80 -0
  97. package/src/build/node/yarn.ts +8 -0
  98. package/src/build/tests/storybook.test.ts +46 -0
  99. package/src/build/types.ts +75 -0
  100. package/src/catladder-gitlab.ts +52 -0
  101. package/src/config/configruedEnvs.test.ts +97 -0
  102. package/src/config/configruedEnvs.ts +56 -0
  103. package/src/config/index.ts +2 -0
  104. package/src/config/readConfig.ts +36 -0
  105. package/src/constants.ts +2 -0
  106. package/src/context/index.ts +194 -0
  107. package/src/defaults/index.ts +6 -0
  108. package/src/deploy/base.ts +101 -0
  109. package/src/deploy/index.ts +19 -0
  110. package/src/deploy/kubernetes/cloudsql.ts +13 -0
  111. package/src/deploy/kubernetes/deployJob.ts +116 -0
  112. package/src/deploy/kubernetes/index.ts +1 -0
  113. package/src/deploy/kubernetes/mongodb.ts +20 -0
  114. package/src/deploy/types.ts +60 -0
  115. package/src/index.ts +8 -0
  116. package/{scripts/magic/tests/createPipeline.test.ts → src/pipeline/createChildPipeline.test.ts} +5 -4
  117. package/src/pipeline/createChildPipeline.ts +51 -0
  118. package/src/pipeline/createJobs.ts +158 -0
  119. package/src/pipeline/index.ts +2 -0
  120. package/src/pipeline/yarnInfo.ts +54 -0
  121. package/src/rules/index.ts +37 -0
  122. package/src/runner/index.ts +10 -0
  123. package/src/types/config.ts +88 -0
  124. package/src/types/context.ts +36 -0
  125. package/src/types/gitlab-types.ts +94 -0
  126. package/{scripts/magic → src}/types/index.ts +0 -0
  127. package/src/utils/index.ts +10 -0
  128. package/tsconfig.json +4 -2
  129. package/Dockerfile +0 -84
  130. package/dist/scripts/createSamplePipeline.d.ts +0 -2
  131. package/dist/scripts/createSamplePipeline.js +0 -14
  132. package/dist/scripts/magic/build/docker.d.ts +0 -2
  133. package/dist/scripts/magic/build/docker.js +0 -68
  134. package/dist/scripts/magic/build/index.d.ts +0 -9
  135. package/dist/scripts/magic/build/index.js +0 -12
  136. package/dist/scripts/magic/build/node.d.ts +0 -6
  137. package/dist/scripts/magic/build/node.js +0 -150
  138. package/dist/scripts/magic/build/types.d.ts +0 -18
  139. package/dist/scripts/magic/build/types.js +0 -7
  140. package/dist/scripts/magic/context/index.d.ts +0 -3
  141. package/dist/scripts/magic/context/index.js +0 -122
  142. package/dist/scripts/magic/createChildPipeline/index.d.ts +0 -3
  143. package/dist/scripts/magic/createChildPipeline/index.js +0 -68
  144. package/dist/scripts/magic/createPipeline.d.ts +0 -14
  145. package/dist/scripts/magic/createPipeline.js +0 -80
  146. package/dist/scripts/magic/deploy/index.d.ts +0 -9
  147. package/dist/scripts/magic/deploy/index.js +0 -12
  148. package/dist/scripts/magic/deploy/kubernetes.d.ts +0 -5
  149. package/dist/scripts/magic/deploy/kubernetes.js +0 -62
  150. package/dist/scripts/magic/deploy/types.d.ts +0 -41
  151. package/dist/scripts/magic/deploy/types.js +0 -7
  152. package/dist/scripts/magic/index.d.ts +0 -2
  153. package/dist/scripts/magic/index.js +0 -16
  154. package/dist/scripts/magic/sample-config.d.ts +0 -3
  155. package/dist/scripts/magic/sample-config.js +0 -77
  156. package/dist/scripts/magic/tests/createPipeline.test.d.ts +0 -1
  157. package/dist/scripts/magic/tests/createPipeline.test.js +0 -89
  158. package/dist/scripts/magic/types/config.d.ts +0 -49
  159. package/dist/scripts/magic/types/config.js +0 -17
  160. package/dist/scripts/magic/types/context.d.ts +0 -19
  161. package/dist/scripts/magic/types/context.js +0 -2
  162. package/dist/scripts/magic/types/gitlab-types.d.ts +0 -57
  163. package/dist/scripts/magic/types/gitlab-types.js +0 -2
  164. package/dist/scripts/magic/types/index.js +0 -15
  165. package/dist/scripts/magic.d.ts +0 -2
  166. package/dist/scripts/magic.js +0 -43
  167. package/dist/scripts/monorepoGenerate.d.ts +0 -2
  168. package/dist/scripts/monorepoGenerate.js +0 -164
  169. package/dist/scripts/printAllValues.d.ts +0 -2
  170. package/dist/scripts/printAllValues.js +0 -58
  171. package/dist/scripts/printBuildEnv.d.ts +0 -2
  172. package/dist/scripts/printBuildEnv.js +0 -77
  173. package/dist/scripts/utils/extractAllValues.d.ts +0 -1
  174. package/dist/scripts/utils/extractAllValues.js +0 -78
  175. package/dist/scripts/utils/extractBuildEnv.d.ts +0 -5
  176. package/dist/scripts/utils/extractBuildEnv.js +0 -152
  177. package/dist/scripts/utils/extractValuesFromEnvVars.d.ts +0 -2
  178. package/dist/scripts/utils/extractValuesFromEnvVars.js +0 -63
  179. package/dist/scripts/utils/extractValuesFromMr.d.ts +0 -2
  180. package/dist/scripts/utils/extractValuesFromMr.js +0 -86
  181. package/dist/tests/extractValuesFromMr.test.d.ts +0 -1
  182. package/dist/tests/extractValuesFromMr.test.js +0 -68
  183. package/scripts/createSamplePipeline.ts +0 -10
  184. package/scripts/getCommitInfo +0 -11
  185. package/scripts/kubernetesCreateSecret +0 -9
  186. package/scripts/kubernetesDelete +0 -4
  187. package/scripts/kubernetesDeploy +0 -55
  188. package/scripts/kubernetesEnsureNamespace +0 -3
  189. package/scripts/magic/build/index.ts +0 -18
  190. package/scripts/magic/build/node.ts +0 -143
  191. package/scripts/magic/build/types.ts +0 -21
  192. package/scripts/magic/context/index.ts +0 -127
  193. package/scripts/magic/createChildPipeline/index.ts +0 -60
  194. package/scripts/magic/createPipeline.ts +0 -52
  195. package/scripts/magic/deploy/index.ts +0 -19
  196. package/scripts/magic/deploy/kubernetes.ts +0 -65
  197. package/scripts/magic/deploy/types.ts +0 -29
  198. package/scripts/magic/index.ts +0 -2
  199. package/scripts/magic/sample-config.ts +0 -78
  200. package/scripts/magic/types/config.ts +0 -54
  201. package/scripts/magic/types/context.ts +0 -21
  202. package/scripts/magic/types/gitlab-types.ts +0 -69
  203. package/scripts/magic.ts +0 -51
  204. package/scripts/monorepoGenerate.ts +0 -104
  205. package/scripts/printAllValues.ts +0 -17
  206. package/scripts/printBuildEnv.ts +0 -22
  207. package/scripts/utils/extractAllValues.ts +0 -32
  208. package/scripts/utils/extractBuildEnv.ts +0 -94
  209. package/scripts/utils/extractValuesFromEnvVars.ts +0 -21
  210. package/scripts/utils/extractValuesFromMr.ts +0 -39
  211. package/tests/extractValuesFromMr.test.ts +0 -156
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _1 = require(".");
6
+
7
+ describe("getAllEnvsByTrigger", function () {
8
+ var SIMPLE_CONFIG = {
9
+ appName: "my-app",
10
+ customerName: "pan",
11
+ components: {
12
+ app1: {
13
+ dir: "dir1",
14
+ build: {
15
+ type: "node"
16
+ },
17
+ deploy: {
18
+ type: "kubernetes"
19
+ }
20
+ },
21
+ app2: {
22
+ dir: "dir2",
23
+ build: {
24
+ type: "node"
25
+ },
26
+ deploy: {
27
+ type: "kubernetes"
28
+ },
29
+ env: {
30
+ dev2: {
31
+ type: "dev"
32
+ },
33
+ review2: {
34
+ type: "review"
35
+ },
36
+ stage2: {
37
+ type: "stage"
38
+ },
39
+ prod2: {
40
+ type: "prod"
41
+ }
42
+ }
43
+ },
44
+ app3: {
45
+ dir: "dir2",
46
+ build: {
47
+ type: "node"
48
+ },
49
+ deploy: {
50
+ type: "kubernetes"
51
+ },
52
+ env: {
53
+ dev: false,
54
+ review: false,
55
+ stage: false,
56
+ prod: false
57
+ }
58
+ }
59
+ }
60
+ };
61
+ describe("mainBranch", function () {
62
+ it("always includes dev if not disabled", function () {
63
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app1", "mainBranch");
64
+ expect(envs).toEqual(["dev"]);
65
+ });
66
+ it("returns additional dev environments", function () {
67
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app2", "mainBranch");
68
+ expect(envs).toEqual(["dev", "dev2"]);
69
+ });
70
+ it("does not include disabled envs", function () {
71
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app3", "mainBranch");
72
+ expect(envs).toEqual([]);
73
+ });
74
+ });
75
+ describe("mr", function () {
76
+ it("always includes review if not disabled", function () {
77
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app1", "mr");
78
+ expect(envs).toEqual(["review"]);
79
+ });
80
+ it("returns additional dev environments", function () {
81
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app2", "mr");
82
+ expect(envs).toEqual(["review", "review2"]);
83
+ });
84
+ it("does not include disabled envs", function () {
85
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app3", "mr");
86
+ expect(envs).toEqual([]);
87
+ });
88
+ });
89
+ describe("taggedRelease", function () {
90
+ it("always includes review if not disabled", function () {
91
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app1", "taggedRelease");
92
+ expect(envs).toEqual(["stage", "prod"]);
93
+ });
94
+ it("returns additional dev environments", function () {
95
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app2", "taggedRelease");
96
+ expect(envs).toEqual(["stage", "prod", "stage2", "prod2"]);
97
+ });
98
+ it("does not include disabled envs", function () {
99
+ var envs = (0, _1.getAllEnvsByTrigger)(SIMPLE_CONFIG, "app3", "taggedRelease");
100
+ expect(envs).toEqual([]);
101
+ });
102
+ });
103
+ });
@@ -0,0 +1,2 @@
1
+ export * from "./configruedEnvs";
2
+ export * from "./readConfig";
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ Object.defineProperty(o, k2, {
6
+ enumerable: true,
7
+ get: function () {
8
+ return m[k];
9
+ }
10
+ });
11
+ } : function (o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ });
15
+
16
+ var __exportStar = this && this.__exportStar || function (m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+
20
+ exports.__esModule = true;
21
+
22
+ __exportStar(require("./configruedEnvs"), exports);
23
+
24
+ __exportStar(require("./readConfig"), exports);
@@ -0,0 +1,2 @@
1
+ import { Config } from "../types";
2
+ export declare const readConfigSync: (directory?: string) => Config | null;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.readConfigSync = void 0;
5
+
6
+ var fs_1 = require("fs");
7
+
8
+ var ts_node_1 = require("ts-node");
9
+
10
+ var js_yaml_1 = require("js-yaml"); // allows us to load ts files
11
+
12
+
13
+ var fullPath = function (directory, ext) {
14
+ return directory + "/catladder." + ext;
15
+ };
16
+
17
+ var readConfigSync = function (directory) {
18
+ if (directory === void 0) {
19
+ directory = process.cwd();
20
+ }
21
+
22
+ (0, ts_node_1.register)({
23
+ cwd: directory,
24
+ transpileOnly: true,
25
+ compilerOptions: {
26
+ module: "commonjs"
27
+ }
28
+ });
29
+ var found = ["ts", "js", "yml", "yaml"].find(function (extension) {
30
+ return (0, fs_1.existsSync)(fullPath(directory, extension));
31
+ });
32
+
33
+ if (found) {
34
+ if (found === "ts" || found === "js") {
35
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
36
+ return require(fullPath(directory, found))["default"];
37
+ } else {
38
+ return (0, js_yaml_1.load)((0, fs_1.readFileSync)(fullPath(directory, found), {
39
+ encoding: "utf-8"
40
+ }));
41
+ }
42
+ }
43
+
44
+ return null;
45
+ };
46
+
47
+ exports.readConfigSync = readConfigSync;
@@ -0,0 +1,2 @@
1
+ export declare const PIPELINE_IMAGE_TAG: string;
2
+ export declare const DOCKER_REGISTRY: string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
5
+ exports.PIPELINE_IMAGE_TAG = "v1-0-2-9d21e784" || "";
6
+ exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || "";
@@ -0,0 +1,5 @@
1
+ import { Config } from "../types/config";
2
+ import { CommitInfo, Context, Environment, YarnInfo } from "../types/context";
3
+ export declare const getSecretVarName: (env: string, componentName: string, key: string) => string;
4
+ export declare const getEnvironment: (config: Config, componentName: string, env: string, commitInfo?: CommitInfo | undefined, skipReferences?: boolean) => Environment;
5
+ export declare const createContext: (config: Config, componentName: string, env: string, commitInfo?: CommitInfo | undefined, yarnInfo?: YarnInfo | undefined) => Context;
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+
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
+
8
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
9
+ }
10
+
11
+ return t;
12
+ };
13
+
14
+ return __assign.apply(this, arguments);
15
+ };
16
+
17
+ var __read = this && this.__read || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o),
21
+ r,
22
+ ar = [],
23
+ e;
24
+
25
+ try {
26
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
27
+ } catch (error) {
28
+ e = {
29
+ error: error
30
+ };
31
+ } finally {
32
+ try {
33
+ if (r && !r.done && (m = i["return"])) m.call(i);
34
+ } finally {
35
+ if (e) throw e.error;
36
+ }
37
+ }
38
+
39
+ return ar;
40
+ };
41
+
42
+ var __importDefault = this && this.__importDefault || function (mod) {
43
+ return mod && mod.__esModule ? mod : {
44
+ "default": mod
45
+ };
46
+ };
47
+
48
+ exports.__esModule = true;
49
+ exports.createContext = exports.getEnvironment = exports.getSecretVarName = void 0;
50
+
51
+ var lodash_1 = require("lodash");
52
+
53
+ var slugify_1 = __importDefault(require("slugify"));
54
+
55
+ var build_1 = require("../build");
56
+
57
+ var deploy_1 = require("../deploy");
58
+
59
+ var config_1 = require("../types/config");
60
+
61
+ var sanitizeForEnVar = function (s) {
62
+ return s.replace(/-/g, "_");
63
+ };
64
+
65
+ var getSecretVarName = function (env, componentName, key) {
66
+ return "CL_".concat(sanitizeForEnVar(env), "_").concat(sanitizeForEnVar(componentName), "_").concat(key);
67
+ }; // remove dash from component name
68
+
69
+
70
+ exports.getSecretVarName = getSecretVarName;
71
+
72
+ var getEnvironment = function (config, componentName, env, commitInfo, skipReferences // to prevent infinit loop
73
+ ) {
74
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
75
+
76
+ if (skipReferences === void 0) {
77
+ skipReferences = false;
78
+ }
79
+
80
+ var componentConfig = config.components[componentName];
81
+
82
+ if (!componentConfig) {
83
+ throw new Error("unknown component " + componentName);
84
+ }
85
+
86
+ var defaultConfig = componentConfig;
87
+ var envConfig = (_b = (_a = componentConfig.env) === null || _a === void 0 ? void 0 : _a[env]) !== null && _b !== void 0 ? _b : {};
88
+
89
+ if (envConfig === false) {
90
+ throw new Error("env is disabled: " + env);
91
+ }
92
+
93
+ var mergedConfig = (0, lodash_1.merge)({}, defaultConfig, envConfig); // env type: if its set manually, use that, otherwise use the known env types
94
+
95
+ var basePredefinedVariables = {
96
+ ENV_SHORT: env,
97
+ APP_DIR: componentConfig.dir
98
+ };
99
+ var envType = (_c = envConfig === null || envConfig === void 0 ? void 0 : envConfig.type) !== null && _c !== void 0 ? _c : (0, config_1.isKnowEnvType)(env) ? env : null;
100
+
101
+ if (!envType) {
102
+ throw new Error("Missing type in environment " + env + " in component " + componentName);
103
+ }
104
+
105
+ var environmentName = envType === "review" && commitInfo ? "".concat(env, "/").concat(commitInfo.refName, "/").concat(componentName) : "".concat(env, "/").concat(componentName);
106
+ var environmentSlug = envType === "review" && commitInfo ? "".concat(env, "-").concat(commitInfo.refSlug, "-").concat(componentName) : "".concat(env, "-").concat(componentName);
107
+ var predefinedVariables;
108
+ var hostname;
109
+ var url;
110
+
111
+ if (envType === "local") {
112
+ var devLocalConfig = mergedConfig;
113
+ var port = (_d = devLocalConfig.port) !== null && _d !== void 0 ? _d : 3000;
114
+ hostname = "localhost:" + port;
115
+ url = "http://" + hostname;
116
+ predefinedVariables = {
117
+ ROOT_URL: url,
118
+ PORT: port.toString()
119
+ };
120
+ } else {
121
+ var KUBE_NAMESPACE = "".concat(config.customerName, "-").concat(config.appName, "-").concat(env);
122
+ var RELEASE_NAME = "".concat(config.customerName, "-").concat(config.appName, "-").concat(environmentSlug);
123
+ var componentSlug = (0, slugify_1["default"])(componentName);
124
+ var envInUrl = envType === "review" && commitInfo ? "".concat(commitInfo.refSlug, ".").concat(env) : env;
125
+ var HOST_CANONICAL = "".concat(config.appName, "-").concat(componentSlug, ".").concat(envInUrl, ".").concat(config.customerName, ".panter.cloud");
126
+ hostname = (_e = mergedConfig === null || mergedConfig === void 0 ? void 0 : mergedConfig.hostname) !== null && _e !== void 0 ? _e : HOST_CANONICAL;
127
+ var url_1 = "https://".concat(hostname);
128
+ var KUBE_APP_NAME = envType === "review" && commitInfo ? "".concat(componentName, "-").concat(commitInfo.refSlug) : componentName;
129
+ predefinedVariables = __assign(__assign({}, basePredefinedVariables), {
130
+ HOST_CANONICAL: HOST_CANONICAL,
131
+ ROOT_URL: url_1,
132
+ KUBE_NAMESPACE: KUBE_NAMESPACE,
133
+ KUBE_APP_NAME: KUBE_APP_NAME,
134
+ RELEASE_NAME: RELEASE_NAME
135
+ });
136
+ }
137
+
138
+ var publicEnvVars = (_g = (_f = mergedConfig.vars) === null || _f === void 0 ? void 0 : _f.public) !== null && _g !== void 0 ? _g : {};
139
+ var secretEnvVarKeys = (_j = (_h = mergedConfig.vars) === null || _h === void 0 ? void 0 : _h.secret) !== null && _j !== void 0 ? _j : [];
140
+ var secretEnvVars = Object.fromEntries(secretEnvVarKeys.map(function (key) {
141
+ return [key, "$".concat((0, exports.getSecretVarName)(env, componentName, key))];
142
+ }));
143
+ var referencedRaw = (_l = (_k = mergedConfig.vars) === null || _k === void 0 ? void 0 : _k.fromComponents) !== null && _l !== void 0 ? _l : {};
144
+ var referenced = skipReferences ? {} : Object.entries(referencedRaw).reduce(function (acc, _a) {
145
+ var _b = __read(_a, 2),
146
+ otherApp = _b[0],
147
+ mapping = _b[1];
148
+
149
+ var envVars = (0, exports.getEnvironment)(config, otherApp, env, commitInfo, true // prevent infinit loop
150
+ ).envVars;
151
+ return __assign(__assign({}, acc), Object.fromEntries(Object.entries(mapping).map(function (_a) {
152
+ var _b = __read(_a, 2),
153
+ ourKey = _b[0],
154
+ otherKey = _b[1];
155
+
156
+ return [ourKey, envVars[otherKey]];
157
+ })));
158
+ }, {});
159
+
160
+ var envVars = __assign(__assign(__assign(__assign({}, predefinedVariables), secretEnvVars), referenced), publicEnvVars);
161
+
162
+ return {
163
+ envType: envType,
164
+ hostname: hostname,
165
+ fullName: environmentName,
166
+ slug: environmentSlug,
167
+ shortName: env,
168
+ url: predefinedVariables.ROOT_URL,
169
+ envVars: envVars,
170
+ secretEnvVarKeys: secretEnvVarKeys
171
+ };
172
+ };
173
+
174
+ exports.getEnvironment = getEnvironment;
175
+
176
+ var createContext = function (config, componentName, env, commitInfo, yarnInfo) {
177
+ var _a, _b;
178
+
179
+ if (!/^[a-z0-9-]+$/.test(componentName)) {
180
+ throw new Error("componentName may only contain lower case letters, numbers and -");
181
+ }
182
+
183
+ var rawConfig = config.components[componentName];
184
+
185
+ if (!rawConfig) {
186
+ throw new Error("unknown component " + componentName);
187
+ } // envs can override the config
188
+
189
+
190
+ var envConfig = (_b = (_a = rawConfig.env) === null || _a === void 0 ? void 0 : _a[env]) !== null && _b !== void 0 ? _b : {};
191
+ var componentConfigWithoutDefaults = (0, lodash_1.merge)({}, rawConfig, envConfig); // fill in defaults of build and deploy
192
+
193
+ var defaults = componentConfigWithoutDefaults.deploy ? {
194
+ build: build_1.BUILD_TYPES[componentConfigWithoutDefaults.build.type].defaults(),
195
+ deploy: deploy_1.DEPLOY_TYPES[componentConfigWithoutDefaults.deploy.type].defaults()
196
+ } : {
197
+ build: {},
198
+ deploy: {}
199
+ };
200
+ var componentConfig = (0, lodash_1.merge)({}, defaults, componentConfigWithoutDefaults);
201
+ return {
202
+ fullConfig: config,
203
+ componentConfig: componentConfig,
204
+ componentName: componentName,
205
+ environment: (0, exports.getEnvironment)(config, componentName, env, commitInfo),
206
+ commitInfo: commitInfo,
207
+ yarnInfo: yarnInfo
208
+ };
209
+ };
210
+
211
+ exports.createContext = createContext;
@@ -0,0 +1,2 @@
1
+ import { Retry } from "../types";
2
+ export declare const BASE_RETRY: Retry;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.BASE_RETRY = void 0;
5
+ exports.BASE_RETRY = {
6
+ max: 2,
7
+ when: ["runner_system_failure", "stuck_or_timeout_failure"]
8
+ };
@@ -0,0 +1,9 @@
1
+ import { GitlabJob, Context, GitlabJobDef } from "../types";
2
+ export declare const DEPLOY_JOB_NAME = "\uD83D\uDE80 Deploy";
3
+ export declare const STOP_JOB_NAME = "\uD83D\uDED1 Stop \u26A0\uFE0F";
4
+ declare type JobWithoutScript = Omit<GitlabJob, "job"> & {
5
+ job: Omit<GitlabJobDef, "script">;
6
+ };
7
+ export declare const getBaseDeploymentJob: (context: Context) => JobWithoutScript;
8
+ export declare const getBaseDeploymentStopJob: (context: Context) => JobWithoutScript;
9
+ export {};
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
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
+
8
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
9
+ }
10
+
11
+ return t;
12
+ };
13
+
14
+ return __assign.apply(this, arguments);
15
+ };
16
+
17
+ exports.__esModule = true;
18
+ exports.getBaseDeploymentStopJob = exports.getBaseDeploymentJob = exports.STOP_JOB_NAME = exports.DEPLOY_JOB_NAME = void 0;
19
+ exports.DEPLOY_JOB_NAME = "🚀 Deploy";
20
+ exports.STOP_JOB_NAME = "🛑 Stop ⚠️";
21
+ var DEPLOY_RUNNER_VARIABLES = {
22
+ KUBERNETES_CPU_REQUEST: "0.5",
23
+ KUBERNETES_CPU_LIMIT: "1",
24
+ KUBERNETES_MEMORY_REQUEST: "200Mi",
25
+ KUBERNETES_MEMORY_LIMIT: "500Mi"
26
+ };
27
+
28
+ var getBaseDeploymentJob = function (context) {
29
+ var environment = {
30
+ name: context.environment.fullName,
31
+ url: context.environment.url
32
+ };
33
+ var autoStop = context.environment.envType === "review" ? "2 weeks" : context.environment.envType === "dev" ? "3 weeks" : undefined;
34
+ return {
35
+ name: exports.DEPLOY_JOB_NAME,
36
+ envMode: "stagePerEnv",
37
+ // we don't want to deploy when there is a broken test
38
+ needsStages: [{
39
+ stage: "build",
40
+ artifacts: false
41
+ }, {
42
+ stage: "test",
43
+ artifacts: false
44
+ }],
45
+ job: {
46
+ rules: [context.environment.envType === "prod" ? {
47
+ when: "manual"
48
+ } : {
49
+ when: "on_success"
50
+ }],
51
+ stage: "deploy",
52
+ dependencies: [],
53
+ variables: __assign({}, DEPLOY_RUNNER_VARIABLES),
54
+ environment: __assign(__assign({}, environment), {
55
+ on_stop: exports.STOP_JOB_NAME,
56
+ auto_stop_in: autoStop
57
+ })
58
+ }
59
+ };
60
+ };
61
+
62
+ exports.getBaseDeploymentJob = getBaseDeploymentJob;
63
+
64
+ var getBaseDeploymentStopJob = function (context) {
65
+ var environment = {
66
+ name: context.environment.fullName,
67
+ url: context.environment.url
68
+ };
69
+ return {
70
+ name: exports.STOP_JOB_NAME,
71
+ envMode: "stagePerEnv",
72
+ job: {
73
+ needs: [exports.DEPLOY_JOB_NAME],
74
+ rules: [{
75
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
76
+ when: "on_success",
77
+ allow_failure: true
78
+ }, {
79
+ when: "manual",
80
+ allow_failure: true
81
+ }],
82
+ variables: __assign(__assign({}, DEPLOY_RUNNER_VARIABLES), {
83
+ GIT_STRATEGY: "none"
84
+ }),
85
+ stage: "stop",
86
+ dependencies: [],
87
+ environment: __assign(__assign({}, environment), {
88
+ action: "stop"
89
+ })
90
+ }
91
+ };
92
+ };
93
+
94
+ exports.getBaseDeploymentStopJob = getBaseDeploymentStopJob;
@@ -0,0 +1,11 @@
1
+ import { GitlabJobs } from "../types/gitlab-types";
2
+ import { Context } from "../types/context";
3
+ import { DeployConfig } from "./types";
4
+ export declare type DeployTypes = { [type in DeployConfig["type"]]: {
5
+ jobs: (context: Context) => GitlabJobs;
6
+ defaults: () => Partial<Extract<DeployConfig, {
7
+ type: type;
8
+ }>>;
9
+ } };
10
+ export * from "./types";
11
+ export declare const DEPLOY_TYPES: DeployTypes;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ Object.defineProperty(o, k2, {
6
+ enumerable: true,
7
+ get: function () {
8
+ return m[k];
9
+ }
10
+ });
11
+ } : function (o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ });
15
+
16
+ var __exportStar = this && this.__exportStar || function (m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+
20
+ exports.__esModule = true;
21
+ exports.DEPLOY_TYPES = void 0;
22
+
23
+ var kubernetes_1 = require("./kubernetes");
24
+
25
+ __exportStar(require("./types"), exports);
26
+
27
+ exports.DEPLOY_TYPES = {
28
+ kubernetes: {
29
+ jobs: kubernetes_1.createKubernetesDeployJobs,
30
+ defaults: function () {
31
+ return {};
32
+ }
33
+ }
34
+ };
@@ -0,0 +1,6 @@
1
+ import { Context } from "../..";
2
+ export declare const createCloudsqlBaseConfig: (context: Context) => {
3
+ cloudsql: {
4
+ proxyCredentials: string;
5
+ };
6
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.createCloudsqlBaseConfig = void 0;
5
+
6
+ var __1 = require("../..");
7
+
8
+ var createCloudsqlBaseConfig = function (context) {
9
+ return {
10
+ cloudsql: {
11
+ proxyCredentials: "$".concat((0, __1.getSecretVarName)(context.environment.shortName, context.componentName, "cloudsqlProxyCredentials"))
12
+ }
13
+ };
14
+ };
15
+
16
+ exports.createCloudsqlBaseConfig = createCloudsqlBaseConfig;
@@ -0,0 +1,3 @@
1
+ import { GitlabJobs } from "../../types/gitlab-types";
2
+ import { Context } from "../../types/context";
3
+ export declare const createKubernetesDeployJobs: (context: Context) => GitlabJobs;