@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
@@ -1,94 +0,0 @@
1
- import { extractAllValues } from "./extractAllValues";
2
- import slugify from "slugify";
3
-
4
- // deprecated
5
-
6
- type EnvVars = Record<string, string>;
7
- export const extractBuildEnv = async (
8
- componentName: string,
9
- env: string | null,
10
- visitedReferencedApps: { [app: string]: EnvVars } = {} // this is just to avoid infinit recursion
11
- ): Promise<EnvVars> => {
12
- const values = await extractAllValues(componentName, env);
13
- const {
14
- APP_NAME,
15
- CUSTOMER_NAME,
16
- CI_COMMIT_REF_SLUG,
17
- CI_MERGE_REQUEST_IID,
18
- CI_ENVIRONMENT_SLUG,
19
- } = process.env;
20
-
21
- const isNotMonorepo = componentName === ".";
22
-
23
- const KUBE_APP_NAME = CI_MERGE_REQUEST_IID
24
- ? `${componentName}-${CI_COMMIT_REF_SLUG}`
25
- : componentName;
26
- const KUBE_APP_SLUG = isNotMonorepo
27
- ? CI_ENVIRONMENT_SLUG
28
- : slugify(KUBE_APP_NAME);
29
- const CANONICAL_URL = `https://${APP_NAME}-${KUBE_APP_SLUG}.${CUSTOMER_NAME}.panter.cloud`;
30
- const defaultBuildEnv = {
31
- KUBE_APP_NAME,
32
- CANONICAL_URL,
33
- IMAGE_PULL_SECRET: `gitlab-registry-${componentName}`,
34
- ROOT_URL: values?.application?.host || CANONICAL_URL,
35
- };
36
- const publicBuildEnv = values?.buildEnv?.public ?? {};
37
- const merged = {
38
- ...defaultBuildEnv,
39
- ...publicBuildEnv,
40
- };
41
- if (process.env.DEBUG) {
42
- console.log({ values, defaultBuildEnv, publicBuildEnv });
43
- }
44
- // extract referenced build env (only works in monorepo
45
- // like this
46
- /*
47
- fromComponents:
48
- vendure:
49
- API_URL: ROOT_URL
50
- */
51
- const fromComponents: {
52
- [otherApp: string]: {
53
- [ourKey: string]: string;
54
- };
55
- } = values?.buildEnv?.fromComponents ?? {};
56
- const referencedBuildEnv = await Object.entries(fromComponents).reduce(
57
- async (acc, [otherApp, mapping]) => {
58
- if (process.env.DEBUG) {
59
- console.log("extract reference build env", otherApp, mapping);
60
- }
61
- if (!mapping) {
62
- return await acc;
63
- }
64
-
65
- // prevent infinit loop
66
- const otherBuildEnv =
67
- visitedReferencedApps[otherApp] ??
68
- (await extractBuildEnv(otherApp, env, {
69
- ...visitedReferencedApps,
70
- [componentName]: merged,
71
- }));
72
- if (process.env.DEBUG) {
73
- console.log({ otherBuildEnv });
74
- }
75
- // resolve mapping
76
- return {
77
- ...(await acc),
78
- ...Object.entries(mapping).reduce(
79
- (inneracc, [ourKey, otherKey]) => ({
80
- ...inneracc,
81
- [ourKey]: otherBuildEnv[otherKey],
82
- }),
83
- {} as EnvVars
84
- ),
85
- };
86
- },
87
- {} as Promise<EnvVars>
88
- );
89
-
90
- return {
91
- ...merged,
92
- ...referencedBuildEnv,
93
- };
94
- };
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env ts-node
2
- import { set } from "lodash";
3
-
4
- export const extractValuesFromEnvVars = () => {
5
- const values = {};
6
-
7
- const PREFIX = "DEFAULT_VALUE_";
8
- for (const [key, value] of Object.entries(process.env).filter(([key]) =>
9
- key.startsWith(PREFIX)
10
- )) {
11
- const path = key.replace(PREFIX, "").split("_");
12
- let theValue;
13
- try {
14
- theValue = JSON.parse(value ?? "");
15
- } catch (e) {
16
- theValue = value;
17
- }
18
- set(values, path, theValue);
19
- }
20
- return values;
21
- };
@@ -1,39 +0,0 @@
1
- import { Gitlab } from "@gitbeaker/node"; // Just the Project Resource
2
- import { parse } from "yaml";
3
- import { merge } from "lodash";
4
-
5
- const { GL_TOKEN, CI_SERVER_URL } = process.env;
6
-
7
- const gitlabApi = new Gitlab({
8
- token: GL_TOKEN,
9
- host: CI_SERVER_URL,
10
- });
11
- const getMRInfo = async (projectId: string, mrId: number) => {
12
- return await gitlabApi.MergeRequests.show(projectId, mrId);
13
- };
14
-
15
- export const extractValuesFromMRMessage = (mrMessage: string) => {
16
- const codeBlocks = Array.from(mrMessage.matchAll(/```.*([^`]+)```/gm)).map(
17
- (match) => match[1]
18
- );
19
-
20
- return codeBlocks.reduce((values = {}, block) => {
21
- if (block.includes("$env") || block.includes("$values"))
22
- try {
23
- const { $values, $env } = parse(block);
24
- if ($values) merge(values, $values);
25
- if ($env) merge(values, { env: { public: $env } });
26
- return values;
27
- } catch (e) {
28
- console.warn(e);
29
- }
30
- }, {});
31
- };
32
-
33
- export const extractValuesFromMr = async (
34
- projectId: string,
35
- mergeRequestId: number
36
- ) => {
37
- const mrInfo = await getMRInfo(projectId, mergeRequestId);
38
- return extractValuesFromMRMessage(mrInfo.description);
39
- };
@@ -1,156 +0,0 @@
1
- import { extractValuesFromMRMessage } from "../scripts/utils/extractValuesFromMr";
2
-
3
- describe("extractValuesFromMr", () => {
4
- describe("extractValuesFromMRMessage", () => {
5
- it("can extract $values yaml", () => {
6
- const result = extractValuesFromMRMessage(`
7
-
8
- blabla
9
-
10
- test
11
-
12
- \`\`\`
13
- $values:
14
- application:
15
- host: www.foo.com
16
- env:
17
- public:
18
- API_KEY: fooooxxx
19
- BLA: "blubb"
20
- \`\`\`
21
- `);
22
- expect(result).toEqual({
23
- application: {
24
- host: "www.foo.com",
25
- },
26
- env: {
27
- public: {
28
- API_KEY: "fooooxxx",
29
- BLA: "blubb",
30
- },
31
- },
32
- });
33
- });
34
- it("can handle $env as shortcut", () => {
35
- const result = extractValuesFromMRMessage(`
36
-
37
- blabla
38
-
39
- test
40
-
41
- \`\`\`
42
- $env:
43
- API_KEY: fooooxxx
44
- BLA: "blubb"
45
-
46
- \`\`\`
47
- `);
48
- expect(result).toEqual({
49
- env: {
50
- public: {
51
- API_KEY: "fooooxxx",
52
- BLA: "blubb",
53
- },
54
- },
55
- });
56
- });
57
-
58
- it("ignores language in backticks", () => {
59
- const result = extractValuesFromMRMessage(`
60
-
61
- blabla
62
-
63
- test
64
-
65
- \`\`\`yaml
66
- $env:
67
- API_KEY: fooooxxx
68
- BLA: "blubb"
69
-
70
- \`\`\`
71
- `);
72
- expect(result).toEqual({
73
- env: {
74
- public: {
75
- API_KEY: "fooooxxx",
76
- BLA: "blubb",
77
- },
78
- },
79
- });
80
- });
81
- it("can handle mixed blocks", () => {
82
- const result = extractValuesFromMRMessage(`
83
-
84
- blabla
85
-
86
- test
87
-
88
- \`\`\`
89
- $values:
90
- env:
91
- public:
92
- FOO: "bar"
93
-
94
- $env:
95
- API_KEY: fooooxxx
96
- BLA: "blubb"
97
-
98
- \`\`\`
99
- `);
100
- expect(result).toEqual({
101
- env: {
102
- public: {
103
- FOO: "bar",
104
- API_KEY: "fooooxxx",
105
- BLA: "blubb",
106
- },
107
- },
108
- });
109
- });
110
-
111
- it("can handle multiple blocks", () => {
112
- const result = extractValuesFromMRMessage(`
113
-
114
- blabla
115
-
116
- test
117
-
118
- \`\`\`
119
- $values:
120
- env:
121
- public:
122
- FOO: "bar"
123
-
124
- $env:
125
- API_KEY: fooooxxx
126
- BLA: "blubb"
127
-
128
- \`\`\`
129
-
130
-
131
- fooo
132
-
133
- \`\`\`
134
- $values:
135
- env:
136
- public:
137
- FOO: "blubb"
138
-
139
- $env:
140
- TEST: test
141
-
142
- \`\`\`
143
- `);
144
- expect(result).toEqual({
145
- env: {
146
- public: {
147
- FOO: "blubb",
148
- API_KEY: "fooooxxx",
149
- BLA: "blubb",
150
- TEST: "test",
151
- },
152
- },
153
- });
154
- });
155
- });
156
- });