@catladder/pipeline 0.0.0-node16-ddfae617 → 0.0.0-refactor-env-context-9e652b63

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 (175) hide show
  1. package/bin/catladder-gitlab.js +1 -1
  2. package/dist/build/base/createBuildJob.d.ts +2 -2
  3. package/dist/build/base/getBuildInfo.d.ts +1 -1
  4. package/dist/build/docker.d.ts +44 -6
  5. package/dist/build/docker.js +45 -19
  6. package/dist/build/index.d.ts +6 -5
  7. package/dist/build/node/buildJob.d.ts +2 -2
  8. package/dist/build/node/cache.d.ts +2 -2
  9. package/dist/build/node/index.d.ts +1 -1
  10. package/dist/build/node/meteor.d.ts +1 -1
  11. package/dist/build/node/meteor.js +6 -0
  12. package/dist/build/node/testJob.d.ts +2 -2
  13. package/dist/build/node/testJob.js +3 -0
  14. package/dist/build/node/yarn.d.ts +1 -1
  15. package/dist/build/node/yarn.js +13 -1
  16. package/dist/build/types.d.ts +10 -0
  17. package/dist/bundles/catladder-gitlab/index.js +32457 -0
  18. package/dist/catladder-gitlab.js +1 -2
  19. package/dist/config/configruedEnvs.d.ts +1 -1
  20. package/dist/config/readConfig.d.ts +1 -1
  21. package/dist/constants.js +1 -1
  22. package/dist/context/getEnvConfig.d.ts +9 -0
  23. package/dist/context/getEnvConfig.js +26 -0
  24. package/dist/context/getEnvType.d.ts +4 -0
  25. package/dist/context/getEnvType.js +18 -0
  26. package/dist/context/getEnvironment.d.ts +3 -0
  27. package/dist/context/getEnvironment.js +187 -0
  28. package/dist/context/getEnvironmentContext.d.ts +4 -0
  29. package/dist/context/getEnvironmentContext.js +36 -0
  30. package/dist/context/getEnvironmentVariables.d.ts +10 -0
  31. package/dist/context/getEnvironmentVariables.js +322 -0
  32. package/dist/context/getLabels.d.ts +8 -0
  33. package/dist/context/getLabels.js +49 -0
  34. package/dist/context/index.d.ts +5 -6
  35. package/dist/context/index.js +176 -181
  36. package/dist/context/resolveReferences.d.ts +1 -3
  37. package/dist/context/resolveReferences.js +275 -26
  38. package/dist/context/resolveReferences.test.js +332 -81
  39. package/dist/defaults/index.d.ts +1 -1
  40. package/dist/deploy/base.d.ts +4 -2
  41. package/dist/deploy/base.js +37 -17
  42. package/dist/deploy/cloudRun/deployJob.d.ts +3 -0
  43. package/dist/deploy/cloudRun/deployJob.js +139 -0
  44. package/dist/deploy/cloudRun/index.d.ts +9 -0
  45. package/dist/deploy/cloudRun/index.js +56 -0
  46. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +2 -0
  47. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +14 -0
  48. package/dist/deploy/cloudSql/index.d.ts +8 -0
  49. package/dist/deploy/cloudSql/index.js +30 -0
  50. package/dist/deploy/custom/deployJob.d.ts +2 -2
  51. package/dist/deploy/custom/deployJob.js +4 -1
  52. package/dist/deploy/custom/index.d.ts +2 -1
  53. package/dist/deploy/custom/index.js +15 -18
  54. package/dist/deploy/dockerTag/deployJob.d.ts +3 -0
  55. package/dist/deploy/dockerTag/deployJob.js +33 -0
  56. package/dist/deploy/dockerTag/index.d.ts +2 -0
  57. package/dist/deploy/dockerTag/index.js +19 -0
  58. package/dist/deploy/index.d.ts +12 -8
  59. package/dist/deploy/index.js +27 -14
  60. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +4 -0
  61. package/dist/deploy/kubernetes/additionalSecretKeys.js +33 -0
  62. package/dist/deploy/kubernetes/cloudsql.d.ts +1 -1
  63. package/dist/deploy/kubernetes/deployJob.d.ts +2 -2
  64. package/dist/deploy/kubernetes/deployJob.js +13 -66
  65. package/dist/deploy/kubernetes/index.d.ts +2 -1
  66. package/dist/deploy/kubernetes/index.js +45 -16
  67. package/dist/deploy/kubernetes/kubeEnv.d.ts +10 -0
  68. package/dist/deploy/kubernetes/kubeEnv.js +90 -0
  69. package/dist/deploy/kubernetes/kubeValues.d.ts +90 -0
  70. package/dist/deploy/kubernetes/kubeValues.js +96 -0
  71. package/dist/deploy/kubernetes/mongodb.d.ts +18 -5
  72. package/dist/deploy/kubernetes/mongodb.js +118 -8
  73. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +21 -21
  74. package/dist/deploy/types/base.d.ts +15 -0
  75. package/dist/deploy/types/base.js +3 -0
  76. package/dist/deploy/types/custom.d.ts +27 -0
  77. package/dist/deploy/types/custom.js +3 -0
  78. package/dist/deploy/types/dockerTag.d.ts +10 -0
  79. package/dist/deploy/types/dockerTag.js +3 -0
  80. package/dist/deploy/types/googleCloudRun.d.ts +39 -0
  81. package/dist/deploy/types/googleCloudRun.js +3 -0
  82. package/dist/deploy/types/index.d.ts +24 -0
  83. package/dist/deploy/types/index.js +41 -0
  84. package/dist/deploy/{types.d.ts → types/kubernetes.d.ts} +128 -36
  85. package/dist/deploy/types/kubernetes.js +3 -0
  86. package/dist/deploy/utils.d.ts +2 -2
  87. package/dist/deploy/utils.js +4 -0
  88. package/dist/pipeline/createChildPipeline.d.ts +2 -2
  89. package/dist/pipeline/createChildPipeline.js +3 -3
  90. package/dist/pipeline/createJobs.d.ts +2 -2
  91. package/dist/pipeline/createJobs.js +63 -25
  92. package/dist/pipeline/gitlab/makeGitlabJob.d.ts +3 -2
  93. package/dist/pipeline/gitlab/makeGitlabJob.js +2 -1
  94. package/dist/pipeline/packageManager.d.ts +1 -1
  95. package/dist/rules/index.d.ts +1 -1
  96. package/dist/runner/index.d.ts +2 -3
  97. package/dist/tsconfig.tsbuildinfo +1 -1
  98. package/dist/types/config.d.ts +7 -6
  99. package/dist/types/config.js +1 -1
  100. package/dist/types/context.d.ts +10 -2
  101. package/dist/types/environmentContext.d.ts +22 -0
  102. package/dist/types/environmentContext.js +3 -0
  103. package/dist/types/gitlab-types.d.ts +1 -1
  104. package/dist/types/jobs.d.ts +8 -3
  105. package/dist/types/jobs.js +1 -1
  106. package/dist/types/pipeline.d.ts +1 -1
  107. package/package.json +15 -11
  108. package/scripts/bundle +2 -0
  109. package/src/build/base/createBuildJob.ts +3 -2
  110. package/src/build/base/getBuildInfo.ts +1 -1
  111. package/src/build/docker.ts +47 -29
  112. package/src/build/index.ts +8 -5
  113. package/src/build/node/buildJob.ts +2 -2
  114. package/src/build/node/cache.ts +2 -2
  115. package/src/build/node/index.ts +1 -1
  116. package/src/build/node/meteor.ts +8 -2
  117. package/src/build/node/testJob.ts +4 -2
  118. package/src/build/node/yarn.ts +21 -10
  119. package/src/build/tests/storybook.test.ts +1 -1
  120. package/src/build/types.ts +13 -1
  121. package/src/catladder-gitlab.ts +4 -2
  122. package/src/config/configruedEnvs.test.ts +2 -2
  123. package/src/config/configruedEnvs.ts +5 -4
  124. package/src/config/readConfig.ts +1 -1
  125. package/src/context/getEnvConfig.ts +21 -0
  126. package/src/context/getEnvType.ts +17 -0
  127. package/src/context/getEnvironment.ts +40 -0
  128. package/src/context/getEnvironmentContext.ts +57 -0
  129. package/src/context/getEnvironmentVariables.ts +152 -0
  130. package/src/context/getLabels.ts +20 -0
  131. package/src/context/index.ts +25 -191
  132. package/src/context/resolveReferences.test.ts +15 -15
  133. package/src/context/resolveReferences.ts +37 -30
  134. package/src/defaults/index.ts +1 -1
  135. package/src/deploy/base.ts +43 -19
  136. package/src/deploy/cloudRun/deployJob.ts +104 -0
  137. package/src/deploy/cloudRun/index.ts +48 -0
  138. package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +14 -0
  139. package/src/deploy/cloudSql/index.ts +16 -0
  140. package/src/deploy/custom/deployJob.ts +10 -3
  141. package/src/deploy/custom/index.ts +9 -1
  142. package/src/deploy/dockerTag/deployJob.ts +31 -0
  143. package/src/deploy/dockerTag/index.ts +9 -0
  144. package/src/deploy/index.ts +26 -17
  145. package/src/deploy/kubernetes/additionalSecretKeys.ts +23 -0
  146. package/src/deploy/kubernetes/cloudsql.ts +2 -1
  147. package/src/deploy/kubernetes/deployJob.ts +19 -77
  148. package/src/deploy/kubernetes/index.ts +42 -1
  149. package/src/deploy/kubernetes/kubeEnv.ts +48 -0
  150. package/src/deploy/kubernetes/kubeValues.ts +82 -0
  151. package/src/deploy/kubernetes/mongodb.ts +104 -7
  152. package/src/deploy/kubernetes/processSecretsAsFiles.ts +1 -1
  153. package/src/deploy/types/base.ts +17 -0
  154. package/src/deploy/types/custom.ts +24 -0
  155. package/src/deploy/types/dockerTag.ts +12 -0
  156. package/src/deploy/types/googleCloudRun.ts +79 -0
  157. package/src/deploy/types/index.ts +28 -0
  158. package/src/deploy/types/kubernetes.ts +281 -0
  159. package/src/deploy/utils.ts +6 -2
  160. package/src/pipeline/createChildPipeline.test.ts +1 -1
  161. package/src/pipeline/createChildPipeline.ts +4 -4
  162. package/src/pipeline/createJobs.ts +32 -21
  163. package/src/pipeline/gitlab/makeGitlabJob.ts +3 -2
  164. package/src/pipeline/packageManager.ts +1 -1
  165. package/src/rules/index.ts +1 -1
  166. package/src/runner/index.ts +2 -1
  167. package/src/types/config.ts +8 -6
  168. package/src/types/context.ts +14 -2
  169. package/src/types/environmentContext.ts +26 -0
  170. package/src/types/gitlab-types.ts +1 -1
  171. package/src/types/jobs.ts +9 -2
  172. package/src/types/pipeline.ts +1 -1
  173. package/tsconfig.json +2 -0
  174. package/dist/deploy/types.js +0 -16
  175. package/src/deploy/types.ts +0 -189
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
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),
7
+ r,
8
+ ar = [],
9
+ e;
10
+
11
+ try {
12
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
13
+ } catch (error) {
14
+ e = {
15
+ error: error
16
+ };
17
+ } finally {
18
+ try {
19
+ if (r && !r.done && (m = i["return"])) m.call(i);
20
+ } finally {
21
+ if (e) throw e.error;
22
+ }
23
+ }
24
+
25
+ return ar;
26
+ };
27
+
28
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
29
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
30
+ if (ar || !(i in from)) {
31
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
32
+ ar[i] = from[i];
33
+ }
34
+ }
35
+ return to.concat(ar || Array.prototype.slice.call(from));
36
+ };
37
+
38
+ exports.__esModule = true;
39
+ exports.createGoogleCloudRunDeployJobs = void 0;
40
+
41
+ var js_yaml_1 = require("js-yaml");
42
+
43
+ var lodash_1 = require("lodash");
44
+
45
+ var _1 = require(".");
46
+
47
+ var docker_1 = require("../../build/docker");
48
+
49
+ var getLabels_1 = require("../../context/getLabels");
50
+
51
+ var runner_1 = require("../../runner");
52
+
53
+ var base_1 = require("../base");
54
+
55
+ var types_1 = require("../types");
56
+
57
+ var gcloudServiceAccountLoginCommands_1 = require("./utils/gcloudServiceAccountLoginCommands");
58
+
59
+ var createGoogleCloudRunDeployJobs = function (context) {
60
+ var deployConfig = context.componentConfig.deploy;
61
+
62
+ if (deployConfig === false) {
63
+ return [];
64
+ }
65
+
66
+ if (!(0, types_1.isOfDeployType)(deployConfig, "google-cloudrun", "google-cloudrun-job")) {
67
+ // should not happen
68
+ throw new Error("deploy config is wrong");
69
+ }
70
+
71
+ var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
72
+ var fullAppName = "".concat(context.fullConfig.customerName, "-").concat(context.fullConfig.appName);
73
+ var dockerUrl = "".concat(deployConfig.region, "-docker.pkg.dev/").concat(deployConfig.projectId, "/catladder-deploy/").concat(fullAppName);
74
+ var gcloudImageName = "".concat(dockerUrl, "/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG");
75
+
76
+ var pushImageToArtifactsRegistry = __spreadArray(__spreadArray([docker_1.gitlabDockerLogin], __read((0, gcloudServiceAccountLoginCommands_1.gcloudServiceAccountLoginCommands)(context)), false), ["gcloud auth configure-docker ".concat(deployConfig.region, "-docker.pkg.dev"), "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG", "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG ".concat(gcloudImageName), "docker push ".concat(gcloudImageName)], false);
77
+
78
+ var allEnvVars = (0, lodash_1.omit)(context.environment.envVars, _1.GCLOUD_DEPLOY_CREDENTIALS_KEY);
79
+ var labelsString = Object.entries((0, getLabels_1.getLabels)(context)).map(function (_a) {
80
+ var _b = __read(_a, 2),
81
+ key = _b[0],
82
+ value = _b[1];
83
+
84
+ return "".concat(key, "=").concat(value);
85
+ }).join(",");
86
+ var commonArgs = "--project ".concat(deployConfig.projectId, " --region=").concat(deployConfig.region);
87
+
88
+ var getDeployCommand = function () {
89
+ var _a;
90
+
91
+ var name = context.environment.fullName.toLowerCase();
92
+ var command = (_a = deployConfig.command) !== null && _a !== void 0 ? _a : context.componentConfig.build.startCommand;
93
+ var commandArg = command ? "--command=\"".concat(command.split(" ").join(","), "\"") : "";
94
+ var commonDeployArgs = "".concat(commandArg, " --image ").concat(gcloudImageName, " ").concat(commonArgs, " --env-vars-file=____envvars.yaml --labels ").concat(labelsString);
95
+
96
+ if (deployConfig.type === "google-cloudrun") {
97
+ return "gcloud run deploy ".concat(name, " ").concat(commonDeployArgs, " --allow-unauthenticated");
98
+ }
99
+
100
+ if (deployConfig.type === "google-cloudrun-job") {
101
+ return "gcloud beta run jobs create ".concat(name, " ").concat(commonDeployArgs);
102
+ }
103
+ };
104
+
105
+ var getStopCommand = function () {
106
+ var name = context.environment.fullName.toLowerCase();
107
+ var commonStopArgs = "".concat(commonArgs, " --quiet");
108
+
109
+ if (deployConfig.type === "google-cloudrun") {
110
+ return "gcloud run services delete ".concat(name, " ").concat(commonStopArgs);
111
+ }
112
+
113
+ if (deployConfig.type === "google-cloudrun-job") {
114
+ return "gcloud beta run jobs delete ".concat(name, " ").concat(commonStopArgs);
115
+ }
116
+ };
117
+
118
+ var cloudRunDeploy = ["echo \"$ENV_VARS\" > ____envvars.yaml", getDeployCommand(), "docker image rm ".concat(gcloudImageName)];
119
+ var baseStopJob = (0, base_1.getBaseDeploymentStopJob)(context);
120
+ return [(0, lodash_1.merge)({}, baseDeploymentJob, (0, docker_1.getDockerJobBaseProps)(context), {
121
+ artifacts: {
122
+ paths: ["____envvars.yaml"]
123
+ },
124
+ variables: {
125
+ ENV_VARS: (0, js_yaml_1.dump)(allEnvVars, {
126
+ lineWidth: -1,
127
+ quotingType: "'",
128
+ forceQuotes: true
129
+ })
130
+ },
131
+ image: (0, runner_1.getRunnerImage)("gcloud"),
132
+ script: __spreadArray(__spreadArray([], __read(pushImageToArtifactsRegistry), false), __read(cloudRunDeploy), false)
133
+ }), (0, lodash_1.merge)({}, baseStopJob, {
134
+ image: (0, runner_1.getRunnerImage)("gcloud"),
135
+ script: __spreadArray(__spreadArray([], __read((0, gcloudServiceAccountLoginCommands_1.gcloudServiceAccountLoginCommands)(context)), false), [getStopCommand()], false)
136
+ })];
137
+ };
138
+
139
+ exports.createGoogleCloudRunDeployJobs = createGoogleCloudRunDeployJobs;
@@ -0,0 +1,9 @@
1
+ import type { DeployTypeDefinition } from "..";
2
+ export declare const GCLOUD_DEPLOY_CREDENTIALS_KEY = "GCLOUD_DEPLOY_credentialsKey";
3
+ export declare const GCLOUD_RUN_CANONICAL_HOST_SUFFIX = "GCLOUD_RUN_canonicalHostSuffix";
4
+ export declare const GCLOUD_RUN_DEPLOY_TYPE: DeployTypeDefinition<"google-cloudrun">;
5
+ export declare const GCLOUD_RUN_JOB_DEPLOY_TYPE: DeployTypeDefinition<"google-cloudrun-job">;
6
+ export declare const GCLOUD_RUN_DEPLOY_TYPES: {
7
+ "google-cloudrun": DeployTypeDefinition<"google-cloudrun">;
8
+ "google-cloudrun-job": DeployTypeDefinition<"google-cloudrun-job">;
9
+ };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.GCLOUD_RUN_DEPLOY_TYPES = exports.GCLOUD_RUN_JOB_DEPLOY_TYPE = exports.GCLOUD_RUN_DEPLOY_TYPE = exports.GCLOUD_RUN_CANONICAL_HOST_SUFFIX = exports.GCLOUD_DEPLOY_CREDENTIALS_KEY = void 0;
5
+
6
+ var context_1 = require("../../context");
7
+
8
+ var deployJob_1 = require("./deployJob");
9
+
10
+ exports.GCLOUD_DEPLOY_CREDENTIALS_KEY = "GCLOUD_DEPLOY_credentialsKey";
11
+ exports.GCLOUD_RUN_CANONICAL_HOST_SUFFIX = "GCLOUD_RUN_canonicalHostSuffix";
12
+ exports.GCLOUD_RUN_DEPLOY_TYPE = {
13
+ jobs: deployJob_1.createGoogleCloudRunDeployJobs,
14
+ defaults: function () {
15
+ return {};
16
+ },
17
+ additionalSecretKeys: function () {
18
+ return [exports.GCLOUD_DEPLOY_CREDENTIALS_KEY];
19
+ },
20
+ getAdditionalEnvVars: function (_a) {
21
+ var fullName = _a.fullName,
22
+ env = _a.env,
23
+ componentName = _a.componentName;
24
+ var HOST_CANONICAL = fullName.toLowerCase() + "-" + process.env[(0, context_1.getSecretVarName)(env, componentName, exports.GCLOUD_RUN_CANONICAL_HOST_SUFFIX)];
25
+ return {
26
+ HOST_CANONICAL: HOST_CANONICAL
27
+ };
28
+ }
29
+ };
30
+ exports.GCLOUD_RUN_JOB_DEPLOY_TYPE = {
31
+ jobs: deployJob_1.createGoogleCloudRunDeployJobs,
32
+ defaults: function () {
33
+ return {};
34
+ },
35
+ additionalSecretKeys: function () {
36
+ return [exports.GCLOUD_DEPLOY_CREDENTIALS_KEY];
37
+ },
38
+ getAdditionalEnvVars: function (_a) {
39
+ var deployConfigRaw = _a.deployConfigRaw,
40
+ fullName = _a.fullName;
41
+
42
+ if (!deployConfigRaw) {
43
+ return {};
44
+ }
45
+
46
+ var jobName = fullName.toLowerCase();
47
+ var CLOUD_RUN_JOB_TRIGGER_URL = "https://".concat(deployConfigRaw.region, "-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/").concat(deployConfigRaw.projectId, "/jobs/").concat(jobName, ":run");
48
+ return {
49
+ CLOUD_RUN_JOB_TRIGGER_URL: CLOUD_RUN_JOB_TRIGGER_URL
50
+ };
51
+ }
52
+ };
53
+ exports.GCLOUD_RUN_DEPLOY_TYPES = {
54
+ "google-cloudrun": exports.GCLOUD_RUN_DEPLOY_TYPE,
55
+ "google-cloudrun-job": exports.GCLOUD_RUN_JOB_DEPLOY_TYPE
56
+ };
@@ -0,0 +1,2 @@
1
+ import type { Context } from "../../../types";
2
+ export declare const gcloudServiceAccountLoginCommands: (context: Context) => string[];
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.gcloudServiceAccountLoginCommands = void 0;
5
+
6
+ var __1 = require("..");
7
+
8
+ var context_1 = require("../../../context");
9
+
10
+ var gcloudServiceAccountLoginCommands = function (context) {
11
+ return ["echo $".concat((0, context_1.getSecretVarNameForContext)(context, __1.GCLOUD_DEPLOY_CREDENTIALS_KEY), " > ./____keyfile.json\n "), "gcloud auth activate-service-account --key-file=\"./____keyfile.json\""];
12
+ };
13
+
14
+ exports.gcloudServiceAccountLoginCommands = gcloudServiceAccountLoginCommands;
@@ -0,0 +1,8 @@
1
+ import type { Context } from "../../types";
2
+ export declare const hasCloudSQL: (context: Context) => boolean | undefined;
3
+ export declare const getCloudSQLConfig: (context: Context) => {
4
+ enabled: boolean;
5
+ instanceId?: string | undefined;
6
+ projectId?: string | undefined;
7
+ region?: string | undefined;
8
+ } | undefined;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.getCloudSQLConfig = exports.hasCloudSQL = void 0;
5
+
6
+ var types_1 = require("../types");
7
+
8
+ var hasCloudSQL = function (context) {
9
+ var _a, _b;
10
+
11
+ if ((0, types_1.isOfDeployType)(context.componentConfig.deploy, "kubernetes")) {
12
+ return (_b = (_a = context.componentConfig.deploy.values) === null || _a === void 0 ? void 0 : _a.cloudsql) === null || _b === void 0 ? void 0 : _b.enabled;
13
+ }
14
+
15
+ return false;
16
+ };
17
+
18
+ exports.hasCloudSQL = hasCloudSQL;
19
+
20
+ var getCloudSQLConfig = function (context) {
21
+ var _a;
22
+
23
+ if ((0, types_1.isOfDeployType)(context.componentConfig.deploy, "kubernetes")) {
24
+ return (_a = context.componentConfig.deploy.values) === null || _a === void 0 ? void 0 : _a.cloudsql;
25
+ }
26
+
27
+ throw new Error("cannot get cloud sql config");
28
+ };
29
+
30
+ exports.getCloudSQLConfig = getCloudSQLConfig;
@@ -1,3 +1,3 @@
1
- import { Context } from "../../types/context";
2
- import { CatladderJob } from "../../types/jobs";
1
+ import type { Context } from "../../types/context";
2
+ import type { CatladderJob } from "../../types/jobs";
3
3
  export declare const createCustomDeployJobs: (context: Context) => CatladderJob[];
@@ -40,6 +40,8 @@ exports.createCustomDeployJobs = void 0;
40
40
 
41
41
  var lodash_1 = require("lodash");
42
42
 
43
+ var yarn_1 = require("../../build/node/yarn");
44
+
43
45
  var base_1 = require("../base");
44
46
 
45
47
  var types_1 = require("../types");
@@ -57,8 +59,9 @@ var createCustomDeployJobs = function (context) {
57
59
  }
58
60
 
59
61
  var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
62
+ var yarnInstall = (0, yarn_1.getYarnInstall)(context);
60
63
  return [(0, lodash_1.merge)({}, baseDeploymentJob, {
61
- script: __spreadArray(["cd ".concat(context.componentConfig.dir)], __read(deployConfig.script), false)
64
+ script: __spreadArray(__spreadArray(["cd ".concat(context.componentConfig.dir)], __read(deployConfig.requiresYarnInstall ? yarnInstall : []), false), __read(deployConfig.script), false)
62
65
  })];
63
66
  };
64
67
 
@@ -1 +1,2 @@
1
- export * from "./deployJob";
1
+ import type { DeployTypeDefinition } from "..";
2
+ export declare const CUSTOM_DEPLOY_TYPE: DeployTypeDefinition<"custom">;
@@ -1,22 +1,19 @@
1
1
  "use strict";
2
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
3
  exports.__esModule = true;
4
+ exports.CUSTOM_DEPLOY_TYPE = void 0;
5
+
6
+ var deployJob_1 = require("./deployJob");
21
7
 
22
- __exportStar(require("./deployJob"), exports);
8
+ exports.CUSTOM_DEPLOY_TYPE = {
9
+ jobs: deployJob_1.createCustomDeployJobs,
10
+ defaults: function () {
11
+ return {};
12
+ },
13
+ additionalSecretKeys: function () {
14
+ return [];
15
+ },
16
+ getAdditionalEnvVars: function () {
17
+ return {};
18
+ }
19
+ };
@@ -0,0 +1,3 @@
1
+ import type { Context } from "../../types/context";
2
+ import type { CatladderJob } from "../../types/jobs";
3
+ export declare const createDockerTagDeployJobs: (context: Context) => CatladderJob[];
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.createDockerTagDeployJobs = void 0;
5
+
6
+ var lodash_1 = require("lodash");
7
+
8
+ var docker_1 = require("../../build/docker");
9
+
10
+ var base_1 = require("../base");
11
+
12
+ var types_1 = require("../types");
13
+
14
+ var createDockerTagDeployJobs = function (context) {
15
+ var deployConfig = context.componentConfig.deploy;
16
+
17
+ if (deployConfig === false) {
18
+ return [];
19
+ }
20
+
21
+ if (!(0, types_1.isOfDeployType)(deployConfig, "dockerTag")) {
22
+ // should not happen
23
+ throw new Error("deploy config is not dockerTag");
24
+ }
25
+
26
+ var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
27
+ var tag = deployConfig.tag;
28
+ return [(0, lodash_1.merge)({}, baseDeploymentJob, (0, docker_1.getDockerJobBaseProps)(context), {
29
+ script: [docker_1.gitlabDockerLogin, "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG", "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_IMAGE:".concat(tag), "docker push $DOCKER_IMAGE:".concat(tag), "echo \"pushed as $DOCKER_IMAGE:".concat(tag, "\"")]
30
+ })];
31
+ };
32
+
33
+ exports.createDockerTagDeployJobs = createDockerTagDeployJobs;
@@ -0,0 +1,2 @@
1
+ import type { DeployTypeDefinition } from "..";
2
+ export declare const DOCKER_TAG_DEPLOY_TYPE: DeployTypeDefinition<"dockerTag">;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.DOCKER_TAG_DEPLOY_TYPE = void 0;
5
+
6
+ var deployJob_1 = require("./deployJob");
7
+
8
+ exports.DOCKER_TAG_DEPLOY_TYPE = {
9
+ jobs: deployJob_1.createDockerTagDeployJobs,
10
+ defaults: function () {
11
+ return {};
12
+ },
13
+ additionalSecretKeys: function () {
14
+ return [];
15
+ },
16
+ getAdditionalEnvVars: function () {
17
+ return {};
18
+ }
19
+ };
@@ -1,13 +1,17 @@
1
- import { Context } from "../types/context";
2
- import { CatladderJob } from "../types/jobs";
3
- import { DeployConfig } from "./types";
1
+ import type { Context } from "../types/context";
2
+ import type { EnvironmentContext } from "../types/environmentContext";
3
+ import type { CatladderJob } from "../types/jobs";
4
+ import type { DeployConfigGeneric, DeployConfigType } from "./types";
5
+ export * from "./cloudRun";
6
+ export * from "./cloudSql";
4
7
  export * from "./kubernetes";
5
8
  export * from "./types";
6
9
  export * from "./utils";
7
- export declare type DeployTypes = { [type in DeployConfig["type"]]: {
10
+ export declare type DeployTypeDefinition<T extends DeployConfigType> = {
8
11
  jobs: (context: Context) => CatladderJob[];
9
- defaults: () => Partial<Extract<DeployConfig, {
10
- type: type;
11
- }>>;
12
- } };
12
+ defaults: (envVarContext: EnvironmentContext<any, T>) => Partial<DeployConfigGeneric<T>>;
13
+ additionalSecretKeys: (envVarContext: EnvironmentContext<any, T>) => string[];
14
+ getAdditionalEnvVars: (envVarContext: EnvironmentContext<any, T>) => Record<string, string | undefined | null>;
15
+ };
16
+ export declare type DeployTypes = { [T in DeployConfigType]: DeployTypeDefinition<T> };
13
17
  export declare const DEPLOY_TYPES: DeployTypes;
@@ -1,5 +1,19 @@
1
1
  "use strict";
2
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
+
3
17
  var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
4
18
  if (k2 === undefined) k2 = k;
5
19
  Object.defineProperty(o, k2, {
@@ -20,27 +34,26 @@ var __exportStar = this && this.__exportStar || function (m, exports) {
20
34
  exports.__esModule = true;
21
35
  exports.DEPLOY_TYPES = void 0;
22
36
 
37
+ var cloudRun_1 = require("./cloudRun");
38
+
23
39
  var custom_1 = require("./custom");
24
40
 
41
+ var dockerTag_1 = require("./dockerTag");
42
+
25
43
  var kubernetes_1 = require("./kubernetes");
26
44
 
45
+ __exportStar(require("./cloudRun"), exports);
46
+
47
+ __exportStar(require("./cloudSql"), exports);
48
+
27
49
  __exportStar(require("./kubernetes"), exports);
28
50
 
29
51
  __exportStar(require("./types"), exports);
30
52
 
31
53
  __exportStar(require("./utils"), exports);
32
54
 
33
- exports.DEPLOY_TYPES = {
34
- kubernetes: {
35
- jobs: kubernetes_1.createKubernetesDeployJobs,
36
- defaults: function () {
37
- return {};
38
- }
39
- },
40
- custom: {
41
- jobs: custom_1.createCustomDeployJobs,
42
- defaults: function () {
43
- return {};
44
- }
45
- }
46
- };
55
+ exports.DEPLOY_TYPES = __assign({
56
+ kubernetes: kubernetes_1.KUBERNETES_DEPLOY_TYPE,
57
+ custom: custom_1.CUSTOM_DEPLOY_TYPE,
58
+ dockerTag: dockerTag_1.DOCKER_TAG_DEPLOY_TYPE
59
+ }, cloudRun_1.GCLOUD_RUN_DEPLOY_TYPES);
@@ -0,0 +1,4 @@
1
+ import type { EnvironmentContext } from "../../types/environmentContext";
2
+ export declare const additionalKubernetesSecretKeys: ({
3
+ deployConfigRaw
4
+ }: EnvironmentContext<any, "kubernetes">) => string[];
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.additionalKubernetesSecretKeys = void 0;
5
+
6
+ var additionalKubernetesSecretKeys = function (_a) {
7
+ var _b, _c, _d, _e;
8
+
9
+ var deployConfigRaw = _a.deployConfigRaw;
10
+
11
+ if (!deployConfigRaw) {
12
+ return [];
13
+ }
14
+
15
+ var keys = [];
16
+
17
+ if ((_c = (_b = deployConfigRaw.values) === null || _b === void 0 ? void 0 : _b.mongodb) === null || _c === void 0 ? void 0 : _c.enabled) {
18
+ keys.push("MONGODB_ROOT_PASSWORD");
19
+
20
+ if (deployConfigRaw.values.mongodb.architecture === "replicaset") {
21
+ keys.push("MONGODB_REPLICASET_KEY");
22
+ }
23
+ }
24
+
25
+ if ((_e = (_d = deployConfigRaw.values) === null || _d === void 0 ? void 0 : _d.cloudsql) === null || _e === void 0 ? void 0 : _e.enabled) {
26
+ keys.push("POSTGRESQL_PASSWORD");
27
+ keys.push("cloudsqlProxyCredentials");
28
+ }
29
+
30
+ return keys;
31
+ };
32
+
33
+ exports.additionalKubernetesSecretKeys = additionalKubernetesSecretKeys;
@@ -1,4 +1,4 @@
1
- import { Context } from "../..";
1
+ import type { Context } from "../..";
2
2
  export declare const createCloudsqlBaseConfig: (context: Context) => {
3
3
  cloudsql: {
4
4
  proxyCredentials: string;
@@ -1,3 +1,3 @@
1
- import { Context } from "../../types/context";
2
- import { CatladderJob } from "../../types/jobs";
1
+ import type { Context } from "../../types/context";
2
+ import type { CatladderJob } from "../../types/jobs";
3
3
  export declare const createKubernetesDeployJobs: (context: Context) => CatladderJob[];
@@ -60,20 +60,14 @@ var __1 = require("../..");
60
60
 
61
61
  var runner_1 = require("../../runner");
62
62
 
63
- var utils_1 = require("../../utils");
64
-
65
63
  var base_1 = require("../base");
66
64
 
67
65
  var types_1 = require("../types");
68
66
 
69
- var cloudsql_1 = require("./cloudsql");
70
-
71
- var mongodb_1 = require("./mongodb");
72
-
73
- var processSecretsAsFiles_1 = require("./processSecretsAsFiles");
67
+ var kubeValues_1 = require("./kubeValues");
74
68
 
75
69
  var createKubernetesDeployJobs = function (context) {
76
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
70
+ var _a, _b;
77
71
 
78
72
  var deployConfig = context.componentConfig.deploy;
79
73
 
@@ -86,82 +80,30 @@ var createKubernetesDeployJobs = function (context) {
86
80
  throw new Error("deploy config is not kubernetes");
87
81
  }
88
82
 
89
- var allEnvVars = context.environment.envVars;
90
- /**
91
- * separate by secrets and public.
92
- * we evalulate the actual values later, but want to store the secrets in kubernetes secrets
93
- */
94
-
95
- var env = Object.entries(allEnvVars).reduce(function (acc, _a) {
96
- var _b, _c;
97
-
98
- var _d;
99
-
100
- var _e = __read(_a, 2),
101
- key = _e[0],
102
- value = _e[1];
103
-
104
- if ((_d = String(value)) === null || _d === void 0 ? void 0 : _d.startsWith("$CL_")) {
105
- acc.secret = __assign(__assign({}, acc.secret), (_b = {}, _b[key] = value, _b));
106
- return acc;
107
- }
108
-
109
- acc.public = __assign(__assign({}, acc.public), (_c = {}, _c[key] = value, _c));
110
- return acc;
111
- }, {
112
- secret: {},
113
- public: {}
114
- });
115
- var defaultAppConfig = {
116
- host: context.environment.host,
117
- command: context.componentConfig.build.startCommand,
118
- livenessProbe: {
119
- httpGet: {
120
- path: (_c = (_b = (_a = deployConfig.values) === null || _a === void 0 ? void 0 : _a.application) === null || _b === void 0 ? void 0 : _b.healthRoute) !== null && _c !== void 0 ? _c : "__health"
121
- }
122
- },
123
- readinessProbe: {
124
- httpGet: {
125
- path: (_f = (_e = (_d = deployConfig.values) === null || _d === void 0 ? void 0 : _d.application) === null || _e === void 0 ? void 0 : _e.healthRoute) !== null && _f !== void 0 ? _f : "__health"
126
- }
127
- },
128
- startupProbe: {
129
- httpGet: {
130
- path: (_j = (_h = (_g = deployConfig.values) === null || _g === void 0 ? void 0 : _g.application) === null || _h === void 0 ? void 0 : _h.healthRoute) !== null && _j !== void 0 ? _j : "__health"
131
- }
132
- }
133
- };
134
-
135
- var defaultKubeValues = __assign(__assign({
136
- application: defaultAppConfig,
137
- env: env
138
- }, ((_l = (_k = deployConfig.values) === null || _k === void 0 ? void 0 : _k.cloudsql) === null || _l === void 0 ? void 0 : _l.enabled) ? (0, cloudsql_1.createCloudsqlBaseConfig)(context) : {}), ((_o = (_m = deployConfig.values) === null || _m === void 0 ? void 0 : _m.mongodb) === null || _o === void 0 ? void 0 : _o.enabled) ? (0, mongodb_1.createMongodbBaseConfig)(context) : {});
139
-
140
- var kubeValues = (0, processSecretsAsFiles_1.processSecretsAsFiles)((0, utils_1.mergeWithMergingArrays)(defaultKubeValues, deployConfig.values));
83
+ var kubeValues = (0, kubeValues_1.createKubeValues)(context);
141
84
  var kubernetesEnvironment = {
142
85
  namespace: context.environment.envVars.KUBE_NAMESPACE
143
86
  };
144
87
  var shared = {
145
88
  image: (0, runner_1.getRunnerImage)("kubernetes"),
146
89
  variables: __assign(__assign({}, context.environment.envVars), {
90
+ RELEASE_NAME: context.environment.fullName,
147
91
  HELM_EXPERIMENTAL_OCI: "1",
148
- IMAGE_PULL_SECRET: "gitlab-registry-".concat(context.componentName),
92
+ KUBE_DOCKER_IMAGE_PULL_SECRET: "gitlab-registry-".concat(context.componentName),
149
93
  KUBE_VALUES: (0, js_yaml_1.dump)(kubeValues, {
150
94
  lineWidth: -1,
151
95
  quotingType: "'",
152
96
  forceQuotes: true
153
97
  }),
154
98
  HELM_GITLAB_CHART_NAME: "the-panter-chart",
155
- HELM_ARGS: __spreadArray(__spreadArray([], __read(deployConfig.debug ? ["--debug"] : []), false), __read((_p = deployConfig.additionalHelmArgs) !== null && _p !== void 0 ? _p : []), false).join(" "),
99
+ HELM_ARGS: __spreadArray(__spreadArray([], __read(deployConfig.debug ? ["--debug"] : []), false), __read((_a = deployConfig.additionalHelmArgs) !== null && _a !== void 0 ? _a : []), false).join(" "),
156
100
  COMPONENT_NAME: context.componentName,
157
- BUILD_ID: (_q = context.commitInfo) === null || _q === void 0 ? void 0 : _q.buildId,
158
- // TODO: unify with docker build stage
159
- IMAGE_NAME: context.environment.shortName + "/" + context.componentName,
160
- IMAGE_TAG: "$CI_COMMIT_SHA"
101
+ BUILD_ID: (_b = context.commitInfo) === null || _b === void 0 ? void 0 : _b.buildId
161
102
  })
162
103
  };
163
104
  var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
164
105
  var baseStopJob = (0, base_1.getBaseDeploymentStopJob)(context);
106
+ var baseRollbackJob = (0, base_1.getBaseRollbackJob)(context);
165
107
  var clusterName = "kube-".concat(context.environment.fullName);
166
108
  var connectContext = ["kubectl config set-cluster \"".concat(clusterName, "\" --server=\"$").concat((0, __1.getSecretVarNameForContext)(context, "KUBE_URL"), "\" --certificate-authority <(echo $").concat((0, __1.getSecretVarNameForContext)(context, "KUBE_CA_PEM"), " | base64 -d) --embed-certs=true"), "kubectl config set-credentials \"".concat(clusterName, "\" --token=\"$").concat((0, __1.getSecretVarNameForContext)(context, "KUBE_TOKEN"), "\""), "kubectl config set-context \"".concat(clusterName, "\" --cluster=\"").concat(clusterName, "\" --user=\"").concat(clusterName, "\" --namespace=\"").concat(context.environment.envVars.KUBE_NAMESPACE, "\""), "kubectl config use-context \"".concat(clusterName, "\"")];
167
109
  return [(0, lodash_1.merge)({}, baseDeploymentJob, shared, {
@@ -174,6 +116,11 @@ var createKubernetesDeployJobs = function (context) {
174
116
  environment: {
175
117
  kubernetes: kubernetesEnvironment
176
118
  }
119
+ }), (0, lodash_1.merge)({}, baseRollbackJob, shared, {
120
+ script: __spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesRollback"], false),
121
+ environment: {
122
+ kubernetes: kubernetesEnvironment
123
+ }
177
124
  })];
178
125
  };
179
126