@catladder/pipeline 1.153.1 → 1.154.0

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 (153) hide show
  1. package/dist/build/artifacts/createBuildJobArtifact.d.ts +3 -0
  2. package/dist/build/artifacts/createBuildJobArtifact.js +97 -0
  3. package/dist/build/base/createAppBuildJob.d.ts +3 -3
  4. package/dist/build/base/createAppBuildJob.js +9 -15
  5. package/dist/build/base/index.d.ts +6 -2
  6. package/dist/build/base/index.js +14 -5
  7. package/dist/build/base/writeDotEnv.js +2 -1
  8. package/dist/build/custom/__tests__/testJob.test.js +1 -1
  9. package/dist/build/custom/buildJob.js +3 -10
  10. package/dist/build/docker.js +3 -3
  11. package/dist/build/index.d.ts +13 -6
  12. package/dist/build/index.js +29 -7
  13. package/dist/build/node/buildJob.d.ts +7 -2
  14. package/dist/build/node/buildJob.js +40 -33
  15. package/dist/build/node/cache.d.ts +2 -2
  16. package/dist/build/node/cache.js +8 -4
  17. package/dist/build/node/index.d.ts +2 -2
  18. package/dist/build/node/meteor.js +3 -6
  19. package/dist/build/node/testJob.d.ts +3 -2
  20. package/dist/build/node/testJob.js +9 -4
  21. package/dist/build/node/yarn.js +1 -1
  22. package/dist/build/rails/build.d.ts +1 -1
  23. package/dist/build/rails/build.js +7 -2
  24. package/dist/build/rails/test.d.ts +1 -1
  25. package/dist/build/rails/test.js +5 -0
  26. package/dist/build/sbom.js +3 -2
  27. package/dist/build/types.d.ts +48 -4
  28. package/dist/build/types.js +7 -1
  29. package/dist/bundles/catladder-gitlab/index.js +2 -2
  30. package/dist/constants.js +1 -1
  31. package/dist/context/createAllComponentsContext.d.ts +12 -0
  32. package/dist/context/createAllComponentsContext.js +159 -0
  33. package/dist/context/createComponentContext.d.ts +1 -5
  34. package/dist/context/createComponentContext.js +82 -20
  35. package/dist/context/createWorkspaceContext.d.ts +16 -0
  36. package/dist/context/createWorkspaceContext.js +173 -0
  37. package/dist/context/getBuildInfoVariables.d.ts +1 -1
  38. package/dist/context/getEnvironmentContext.d.ts +1 -1
  39. package/dist/context/getEnvironmentVariables.d.ts +2 -2
  40. package/dist/context/getEnvironmentVariables.js +5 -4
  41. package/dist/context/getLabels.js +4 -4
  42. package/dist/deploy/base/deploy.d.ts +1 -1
  43. package/dist/deploy/base/deploy.js +18 -5
  44. package/dist/deploy/cloudRun/artifactsRegistry.js +2 -2
  45. package/dist/deploy/cloudRun/createJobs/common.d.ts +4 -4
  46. package/dist/deploy/cloudRun/index.d.ts +2 -2
  47. package/dist/deploy/custom/index.d.ts +2 -2
  48. package/dist/deploy/dockerTag/index.d.ts +2 -2
  49. package/dist/deploy/index.d.ts +7 -7
  50. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
  51. package/dist/deploy/kubernetes/cloudSql/index.js +1 -1
  52. package/dist/deploy/kubernetes/deployJob.js +2 -2
  53. package/dist/deploy/kubernetes/index.d.ts +2 -2
  54. package/dist/deploy/sbom.d.ts +1 -1
  55. package/dist/deploy/sbom.js +4 -3
  56. package/dist/deploy/types/index.d.ts +3 -3
  57. package/dist/pipeline/createAllJobs.d.ts +12 -10
  58. package/dist/pipeline/createAllJobs.js +94 -51
  59. package/dist/pipeline/createJobsForComponent.js +2 -3
  60. package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
  61. package/dist/pipeline/createJobsForWorkspace.js +12 -0
  62. package/dist/pipeline/createMainPipeline.js +26 -6
  63. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +3 -16
  64. package/dist/pipeline/gitlab/createGitlabJobs.js +191 -73
  65. package/dist/pipeline/packageManager.d.ts +3 -2
  66. package/dist/pipeline/packageManager.js +43 -15
  67. package/dist/tsconfig.tsbuildinfo +1 -1
  68. package/dist/types/config.d.ts +5 -4
  69. package/dist/types/context.d.ts +77 -12
  70. package/dist/types/context.js +10 -1
  71. package/dist/types/environmentContext.d.ts +5 -6
  72. package/dist/types/jobs.d.ts +5 -0
  73. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +8 -8
  74. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +8 -0
  75. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +8 -8
  76. package/examples/__snapshots__/cloud-run-no-service.ts.snap +8 -8
  77. package/examples/__snapshots__/cloud-run-non-public.ts.snap +8 -8
  78. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +8 -8
  79. package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +8 -8
  80. package/examples/__snapshots__/cloud-run-service-increase-timout.ts.snap +8 -8
  81. package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +8 -8
  82. package/examples/__snapshots__/cloud-run-storybook.ts.snap +4 -8
  83. package/examples/__snapshots__/cloud-run-with-ngnix.ts.snap +4 -8
  84. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +16 -16
  85. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +589 -1097
  86. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +8 -8
  87. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +4 -0
  88. package/examples/__snapshots__/custom-build-job.ts.snap +4 -0
  89. package/examples/__snapshots__/custom-deploy.ts.snap +8 -8
  90. package/examples/__snapshots__/custom-envs.ts.snap +18 -12
  91. package/examples/__snapshots__/custom-sbom-java.ts.snap +4 -0
  92. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +8 -8
  93. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +8 -8
  94. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +8 -8
  95. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +16 -16
  96. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +8 -8
  97. package/examples/__snapshots__/local-dot-env.ts.snap +8 -8
  98. package/examples/__snapshots__/meteor-kubernetes.ts.snap +8 -0
  99. package/examples/__snapshots__/multiline-var.ts.snap +16 -16
  100. package/examples/__snapshots__/native-app.ts.snap +24 -16
  101. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +8 -8
  102. package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +8 -8
  103. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +16 -16
  104. package/examples/cloud-run-with-sql.ts +9 -2
  105. package/package.json +1 -1
  106. package/src/build/artifacts/createBuildJobArtifact.ts +61 -0
  107. package/src/build/base/createAppBuildJob.ts +26 -22
  108. package/src/build/base/index.ts +31 -4
  109. package/src/build/base/writeDotEnv.ts +6 -2
  110. package/src/build/custom/__tests__/testJob.test.ts +4 -4
  111. package/src/build/custom/buildJob.ts +2 -13
  112. package/src/build/docker.ts +6 -7
  113. package/src/build/index.ts +39 -7
  114. package/src/build/node/buildJob.ts +68 -56
  115. package/src/build/node/cache.ts +17 -8
  116. package/src/build/node/index.ts +4 -2
  117. package/src/build/node/meteor.ts +3 -9
  118. package/src/build/node/testJob.ts +21 -7
  119. package/src/build/node/yarn.ts +2 -2
  120. package/src/build/rails/build.ts +14 -4
  121. package/src/build/rails/test.ts +9 -1
  122. package/src/build/sbom.ts +7 -2
  123. package/src/build/types.ts +68 -4
  124. package/src/context/createAllComponentsContext.ts +31 -0
  125. package/src/context/createComponentContext.ts +59 -20
  126. package/src/context/createWorkspaceContext.ts +56 -0
  127. package/src/context/getBuildInfoVariables.ts +2 -1
  128. package/src/context/getEnvironmentContext.ts +2 -2
  129. package/src/context/getEnvironmentVariables.ts +12 -6
  130. package/src/context/getLabels.ts +2 -2
  131. package/src/deploy/base/deploy.ts +33 -7
  132. package/src/deploy/cloudRun/artifactsRegistry.ts +2 -3
  133. package/src/deploy/cloudRun/createJobs/common.ts +4 -4
  134. package/src/deploy/cloudRun/index.ts +68 -67
  135. package/src/deploy/custom/index.ts +2 -2
  136. package/src/deploy/dockerTag/index.ts +8 -7
  137. package/src/deploy/index.ts +11 -9
  138. package/src/deploy/kubernetes/additionalSecretKeys.ts +3 -1
  139. package/src/deploy/kubernetes/cloudSql/index.ts +1 -1
  140. package/src/deploy/kubernetes/deployJob.ts +2 -2
  141. package/src/deploy/kubernetes/index.ts +42 -41
  142. package/src/deploy/sbom.ts +9 -4
  143. package/src/pipeline/createAllJobs.ts +56 -55
  144. package/src/pipeline/createChildPipeline.ts +1 -0
  145. package/src/pipeline/createJobsForComponent.ts +5 -4
  146. package/src/pipeline/createJobsForWorkspace.ts +12 -0
  147. package/src/pipeline/createMainPipeline.ts +38 -23
  148. package/src/pipeline/gitlab/createGitlabJobs.ts +283 -119
  149. package/src/pipeline/packageManager.ts +25 -9
  150. package/src/types/config.ts +4 -1
  151. package/src/types/context.ts +105 -11
  152. package/src/types/environmentContext.ts +6 -7
  153. package/src/types/jobs.ts +3 -1
@@ -0,0 +1,3 @@
1
+ import { type Context } from "../../types";
2
+ import type { CatladderJob } from "../../types/jobs";
3
+ export declare const createBuildJobArtifacts: (context: Context) => CatladderJob["artifacts"];
@@ -0,0 +1,97 @@
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
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = this && this.__read || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o),
17
+ r,
18
+ ar = [],
19
+ e;
20
+ try {
21
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
+ } catch (error) {
23
+ e = {
24
+ error: error
25
+ };
26
+ } finally {
27
+ try {
28
+ if (r && !r.done && (m = i["return"])) m.call(i);
29
+ } finally {
30
+ if (e) throw e.error;
31
+ }
32
+ }
33
+ return ar;
34
+ };
35
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
36
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
37
+ if (ar || !(i in from)) {
38
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
39
+ ar[i] = from[i];
40
+ }
41
+ }
42
+ return to.concat(ar || Array.prototype.slice.call(from));
43
+ };
44
+ Object.defineProperty(exports, "__esModule", {
45
+ value: true
46
+ });
47
+ exports.createBuildJobArtifacts = void 0;
48
+ var path_1 = require("path");
49
+ var types_1 = require("../../types");
50
+ var lodash_1 = require("lodash");
51
+ var writeDotEnv_1 = require("../base/writeDotEnv");
52
+ var createBuildJobArtifacts = function (context) {
53
+ var _a, _b;
54
+ var paths = context.type === "workspace" ? context.components.flatMap(function (c) {
55
+ return getArtifactsPathForComponent(c);
56
+ }) : getArtifactsPathForComponent(context, ["__build_info.json"]);
57
+ // esxclude .env files if generated
58
+ var exclude = context.type === "workspace" ? context.components.flatMap(function (c) {
59
+ return getDotEnvPathsForComponent(c);
60
+ }) : getDotEnvPathsForComponent(context);
61
+ return __assign(__assign({
62
+ paths: (0, lodash_1.uniq)(paths).sort(function (a, b) {
63
+ return a.localeCompare(b);
64
+ })
65
+ }, exclude.length > 0 ? {
66
+ exclude: exclude
67
+ } : {}), {
68
+ expire_in: "1 day",
69
+ when: "always",
70
+ reports:
71
+ // TODO: support for junit reports in other builds
72
+ context.type === "component" && (0, types_1.componentContextIsStandaloneBuild)(context) ? {
73
+ junit: (_b = (_a = context.build.config.artifactsReports) === null || _a === void 0 ? void 0 : _a.junit) === null || _b === void 0 ? void 0 : _b.map(function (p) {
74
+ return (0, path_1.join)(context.build.dir, p);
75
+ })
76
+ } : {}
77
+ });
78
+ };
79
+ exports.createBuildJobArtifacts = createBuildJobArtifacts;
80
+ var getArtifactsPathForComponent = function (c, additionalPaths) {
81
+ var _a, _b;
82
+ return (_b = __spreadArray(__spreadArray([], __read((_a = c.build.config.artifactsPaths) !== null && _a !== void 0 ? _a : []), false), __read(additionalPaths !== null && additionalPaths !== void 0 ? additionalPaths : []), false)) === null || _b === void 0 ? void 0 : _b.flatMap(function (artifact) {
83
+ return c.build
84
+ // in theory, we only need "direct",
85
+ // but in some cases project may have packages in the workspace that create build artifacts, which aren't components
86
+ // this highly depends on the build tool. To be safe, we get all
87
+ .getComponentDirs("all").flatMap(function (cDir) {
88
+ return (0, path_1.join)(cDir, artifact);
89
+ });
90
+ });
91
+ };
92
+ var getDotEnvPathsForComponent = function (c) {
93
+ if ((0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(c)) {
94
+ return [(0, path_1.join)(c.build.dir, ".env")];
95
+ }
96
+ return [];
97
+ };
@@ -1,7 +1,7 @@
1
- import type { ComponentContext } from "../..";
1
+ import type { BuildContextStandalone, ComponentContext, WorkspaceContext } from "../..";
2
2
  import type { CatladderJob } from "../../types/jobs";
3
- export type AppBuildJobDefinition = Partial<CatladderJob>;
4
- export declare const createAppBuildJob: (context: ComponentContext, {
3
+ export type AppBuildJobDefinition = Partial<Omit<CatladderJob, "artifacts">>;
4
+ export declare const createAppBuildJob: (context: ComponentContext<BuildContextStandalone> | WorkspaceContext, {
5
5
  script,
6
6
  variables,
7
7
  runnerVariables,
@@ -54,15 +54,15 @@ Object.defineProperty(exports, "__esModule", {
54
54
  });
55
55
  exports.createAppBuildJob = void 0;
56
56
  var lodash_1 = require("lodash");
57
- var path_1 = require("path");
58
57
  var __1 = require("../..");
59
58
  var utils_1 = require("../../utils");
59
+ var createBuildJobArtifact_1 = require("../artifacts/createBuildJobArtifact");
60
60
  var yarn_1 = require("../node/yarn");
61
61
  var constants_1 = require("./constants");
62
62
  var writeBuildInfo_1 = require("./writeBuildInfo");
63
63
  var writeDotEnv_1 = require("./writeDotEnv");
64
64
  var createAppBuildJob = function (context, _a) {
65
- var _b, _c, _d, _e, _f;
65
+ var _b, _c, _d;
66
66
  var script = _a.script,
67
67
  variables = _a.variables,
68
68
  runnerVariables = _a.runnerVariables,
@@ -74,20 +74,14 @@ var createAppBuildJob = function (context, _a) {
74
74
  image: (0, __1.getRunnerImage)("jobs-default"),
75
75
  needs: [],
76
76
  cache: [],
77
- variables: __assign(__assign(__assign(__assign({}, variables !== null && variables !== void 0 ? variables : {}), context.environment.envVars), context.environment.jobOnlyVars.build.envVars), (_b = context.build.config.extraVars) !== null && _b !== void 0 ? _b : {}),
77
+ variables: __assign(__assign({}, variables !== null && variables !== void 0 ? variables : {}), context.type === "component" ? __assign(__assign(__assign({}, context.environment.envVars), context.environment.jobOnlyVars.build.envVars), (_b = context.build.config.extraVars) !== null && _b !== void 0 ? _b : {}) : {}),
78
78
  runnerVariables: __assign(__assign(__assign({}, constants_1.RUNNER_BUILD_RESOURCE_VARIABLES), runnerVariables !== null && runnerVariables !== void 0 ? runnerVariables : {}), (_c = context.build.config.runnerVariables) !== null && _c !== void 0 ? _c : {}),
79
- script: __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read((0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(context) ? (0, writeDotEnv_1.writeDotEnv)(context) : []), false), __read((0, writeBuildInfo_1.writeBuildInfo)(context)), false), __read((0, yarn_1.ensureNodeVersion)(context)), false), ["cd ".concat(context.build.dir)], false), __read((_d = (0, utils_1.ensureArray)(script)) !== null && _d !== void 0 ? _d : []), false),
80
- artifacts: __assign(__assign({
81
- paths: [(0, path_1.join)(context.build.dir, "__build_info.json")]
82
- }, (0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(context) ? {
83
- exclude: [(0, path_1.join)(context.build.dir, ".env")]
84
- } : {}), {
85
- reports: {
86
- junit: (_f = (_e = context.build.config.artifactsReports) === null || _e === void 0 ? void 0 : _e.junit) === null || _f === void 0 ? void 0 : _f.map(function (p) {
87
- return (0, path_1.join)(context.build.dir, p);
88
- })
89
- }
90
- })
79
+ script: __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(context.type === "component" ? (0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(context) ? (0, writeDotEnv_1.writeDotEnv)(context) : [] : context.type === "workspace" ? context.components.filter(function (c) {
80
+ return (0, writeDotEnv_1.componentContextNeedsBuildTimeDotEnv)(c);
81
+ }).flatMap(function (c) {
82
+ return (0, writeDotEnv_1.writeDotEnv)(c);
83
+ }) : []), false), __read(context.type === "component" ? (0, writeBuildInfo_1.writeBuildInfo)(context) : []), false), __read((0, yarn_1.ensureNodeVersion)(context)), false), ["cd ".concat(context.build.dir)], false), __read((_d = (0, utils_1.ensureArray)(script)) !== null && _d !== void 0 ? _d : []), false),
84
+ artifacts: (0, createBuildJobArtifact_1.createBuildJobArtifacts)(context)
91
85
  }, def);
92
86
  };
93
87
  exports.createAppBuildJob = createAppBuildJob;
@@ -1,8 +1,12 @@
1
- import type { ComponentContext } from "../../types/context";
1
+ import type { WorkspaceContext } from "../../types/context";
2
+ import { type ComponentContext } from "../../types/context";
2
3
  import type { CatladderJob } from "../../types/jobs";
3
4
  import type { DockerBuildJobDefinition } from "../docker";
4
5
  import type { AppBuildJobDefinition } from "./createAppBuildJob";
5
- export declare const createBuildJobs: (context: ComponentContext, definitions: {
6
+ export declare const createComponentBuildJobs: (context: ComponentContext, definitions: {
6
7
  appBuild?: AppBuildJobDefinition;
7
8
  dockerBuild: DockerBuildJobDefinition;
9
+ }) => CatladderJob[];
10
+ export declare const createWorkspaceBuildJobs: (context: WorkspaceContext, definitions: {
11
+ appBuild?: AppBuildJobDefinition;
8
12
  }) => CatladderJob[];
@@ -44,16 +44,25 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
44
44
  Object.defineProperty(exports, "__esModule", {
45
45
  value: true
46
46
  });
47
- exports.createBuildJobs = void 0;
47
+ exports.createWorkspaceBuildJobs = exports.createComponentBuildJobs = void 0;
48
48
  var sbom_1 = require("../../deploy/sbom");
49
+ var context_1 = require("../../types/context");
49
50
  var docker_1 = require("../docker");
50
51
  var sbom_2 = require("../sbom");
51
52
  var constants_1 = require("./constants");
52
53
  var createAppBuildJob_1 = require("./createAppBuildJob");
53
- var createBuildJobs = function (context, definitions) {
54
+ var createComponentBuildJobs = function (context, definitions) {
54
55
  var _a;
55
- return __spreadArray(__spreadArray(__spreadArray([], __read(definitions.appBuild ? [(0, createAppBuildJob_1.createAppBuildJob)(context, definitions.appBuild)] : []), false), __read((0, docker_1.requiresDockerBuild)(context) ? [(0, docker_1.createDockerBuildJobBase)(context, __assign(__assign({}, definitions.dockerBuild), {
56
- needs: __spreadArray(__spreadArray([], __read((_a = definitions.dockerBuild.needs) !== null && _a !== void 0 ? _a : []), false), __read(definitions.appBuild ? [constants_1.APP_BUILD_JOB_NAME] : []), false)
56
+ return __spreadArray(__spreadArray(__spreadArray([], __read(definitions.appBuild && (0, context_1.componentContextIsStandaloneBuild)(context) ? [(0, createAppBuildJob_1.createAppBuildJob)(context, definitions.appBuild)] : []), false), __read((0, docker_1.requiresDockerBuild)(context) ? [(0, docker_1.createDockerBuildJobBase)(context, __assign(__assign({}, definitions.dockerBuild), {
57
+ needs: __spreadArray(__spreadArray([], __read((_a = definitions.dockerBuild.needs) !== null && _a !== void 0 ? _a : []), false), __read(definitions.appBuild && (0, context_1.componentContextIsStandaloneBuild)(context) ? [constants_1.APP_BUILD_JOB_NAME] : (0, context_1.componentContextHasWorkspaceBuild)(context) ? [{
58
+ job: constants_1.APP_BUILD_JOB_NAME,
59
+ artifacts: true,
60
+ workspaceName: context.build.workspaceName
61
+ }] : []), false)
57
62
  }))] : []), false), __read((0, sbom_1.sbomDeactivated)(context) ? [] : [(0, sbom_2.createSbomBuildJob)(context)]), false);
58
63
  };
59
- exports.createBuildJobs = createBuildJobs;
64
+ exports.createComponentBuildJobs = createComponentBuildJobs;
65
+ var createWorkspaceBuildJobs = function (context, definitions) {
66
+ return definitions.appBuild ? [(0, createAppBuildJob_1.createAppBuildJob)(context, definitions.appBuild)] : [];
67
+ };
68
+ exports.createWorkspaceBuildJobs = createWorkspaceBuildJobs;
@@ -27,6 +27,7 @@ Object.defineProperty(exports, "__esModule", {
27
27
  });
28
28
  exports.componentContextNeedsBuildTimeDotEnv = exports.writeDotEnv = void 0;
29
29
  var lodash_1 = require("lodash");
30
+ var gitlab_1 = require("../../utils/gitlab");
30
31
  /**
31
32
  * writes a .env file in the components folder
32
33
  * @param context
@@ -47,7 +48,7 @@ var writeDotEnv = function (context) {
47
48
  value = _b[1];
48
49
  return "".concat(key, "=").concat(value === null || value === void 0 ? void 0 : value.toString().replaceAll("\n", "\\n"));
49
50
  }).join("\n");
50
- return ["cat <<EOF > ".concat(context.build.dir, "/.env\n").concat(keyValueString, "\nEOF")];
51
+ return (0, gitlab_1.collapseableSection)("write-dotenv-" + context.name, "write dot env")(["cat <<EOF > ".concat(context.build.dir, "/.env\n").concat(keyValueString, "\nEOF")]);
51
52
  };
52
53
  exports.writeDotEnv = writeDotEnv;
53
54
  var componentContextNeedsBuildTimeDotEnv = function (context) {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  var testJob_1 = require("../testJob");
7
7
  describe("createCustomTestJobs", function () {
8
8
  var baseContext = {
9
- componentName: "testComponent",
9
+ name: "testComponent",
10
10
  environment: {
11
11
  jobOnlyVars: {
12
12
  build: {}
@@ -35,7 +35,6 @@ Object.defineProperty(exports, "__esModule", {
35
35
  value: true
36
36
  });
37
37
  exports.createCustomBuildJobs = void 0;
38
- var path_1 = require("path");
39
38
  var utils_1 = require("../../utils");
40
39
  var docker_1 = require("../docker");
41
40
  var types_1 = require("../types");
@@ -46,24 +45,18 @@ var RUNNER_BUILD_VARIABLES = {
46
45
  KUBERNETES_MEMORY_LIMIT: "4Gi"
47
46
  };
48
47
  var createCustomBuildJobs = function (context) {
49
- var _a, _b, _c;
48
+ var _a;
50
49
  var buildConfig = context.build.config;
51
50
  if (!(0, types_1.isOfBuildType)(buildConfig, "custom")) {
52
51
  throw new Error("deploy config is not custom");
53
52
  }
54
- return (0, base_1.createBuildJobs)(context, {
53
+ return (0, base_1.createComponentBuildJobs)(context, {
55
54
  appBuild: buildConfig.buildCommand !== null ? {
56
55
  image: buildConfig.jobImage,
57
56
  runnerVariables: RUNNER_BUILD_VARIABLES,
58
57
  cache: buildConfig.jobCache,
59
58
  services: buildConfig.jobServices,
60
- script: __spreadArray([], __read((_a = (0, utils_1.ensureArray)(buildConfig.buildCommand)) !== null && _a !== void 0 ? _a : []), false),
61
- artifacts: {
62
- paths: __spreadArray([(0, path_1.join)(context.build.dir, "__build_info.json"), (0, path_1.join)(context.build.dir, "dist")], __read((_c = (_b = buildConfig.artifactsPaths) === null || _b === void 0 ? void 0 : _b.map(function (path) {
63
- return (0, path_1.join)(context.build.dir, path);
64
- })) !== null && _c !== void 0 ? _c : []), false),
65
- expire_in: "1 day"
66
- }
59
+ script: __spreadArray([], __read((_a = (0, utils_1.ensureArray)(buildConfig.buildCommand)) !== null && _a !== void 0 ? _a : []), false)
67
60
  } : undefined,
68
61
  dockerBuild: {
69
62
  script: (0, docker_1.getDockerBuildScriptWithBuiltInDockerFile)(context),
@@ -82,9 +82,9 @@ var getDockerImageVariables = function (context) {
82
82
  // gitlab registry:
83
83
  {
84
84
  DOCKER_REGISTRY: "$CI_REGISTRY",
85
- DOCKER_CACHE_IMAGE: "$CI_REGISTRY_IMAGE/caches/" + context.componentName,
85
+ DOCKER_CACHE_IMAGE: "$CI_REGISTRY_IMAGE/caches/" + context.name,
86
86
  // ONLY USED IN KUBERNETES
87
- DOCKER_IMAGE_NAME: context.env + "/" + context.componentName,
87
+ DOCKER_IMAGE_NAME: context.env + "/" + context.name,
88
88
  DOCKER_IMAGE: "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
89
89
  }), {
90
90
  DOCKER_IMAGE_TAG: "$CI_COMMIT_SHA"
@@ -167,7 +167,7 @@ var BUILT_IN_ENSURE_DOCKERFILE_SCRIPTS = {
167
167
  };
168
168
  var getDockerBuildScriptWithBuiltInDockerFile = function (context, defaultType) {
169
169
  var _a;
170
- var type = "docker" in context.componentConfig.build && context.componentConfig.build.docker && "type" in context.componentConfig.build.docker ? (_a = context.componentConfig.build.docker) === null || _a === void 0 ? void 0 : _a.type : defaultType;
170
+ var type = "docker" in context.build.config && context.build.config.docker && "type" in context.build.config.docker ? (_a = context.build.config.docker) === null || _a === void 0 ? void 0 : _a.type : defaultType;
171
171
  return (0, exports.getDockerBuildDefaultScript)(context, type ? BUILT_IN_ENSURE_DOCKERFILE_SCRIPTS[type] : null);
172
172
  };
173
173
  exports.getDockerBuildScriptWithBuiltInDockerFile = getDockerBuildScriptWithBuiltInDockerFile;
@@ -1,13 +1,20 @@
1
- import type { ComponentContext } from "../types/context";
1
+ import type { ComponentContext, WorkspaceContext } from "../types/context";
2
2
  import type { EnvironmentContext } from "../types/environmentContext";
3
3
  import type { CatladderJob } from "../types/jobs";
4
- import type { BuildConfig, BuildConfigType } from "./types";
5
- export * from "./types";
4
+ import type { BuildConfig, BuildConfigStandaloneType, WorkspaceBuildConfig } from "./types";
6
5
  export * from "./node";
7
- export type BuildTypes = { [type in BuildConfigType]: {
6
+ export * from "./types";
7
+ export type BuildTypes = { [type in BuildConfigStandaloneType]: {
8
8
  jobs: (context: ComponentContext) => CatladderJob[];
9
- defaults: (envContext: EnvironmentContext<BuildConfigType, any>) => Partial<Extract<BuildConfig, {
9
+ defaults: (envContext: EnvironmentContext) => Partial<Extract<BuildConfig, {
10
+ type: type;
11
+ }>>;
12
+ } };
13
+ export declare const BUILD_TYPES: BuildTypes;
14
+ export type WorkspaceBuildTypes = { [type in WorkspaceBuildConfig["type"]]: {
15
+ jobs: (context: WorkspaceContext) => CatladderJob[];
16
+ defaults: () => Partial<Extract<WorkspaceBuildConfig, {
10
17
  type: type;
11
18
  }>>;
12
19
  } };
13
- export declare const BUILD_TYPES: BuildTypes;
20
+ export declare const WORKSPACE_BUILD_TYPES: WorkspaceBuildTypes;
@@ -22,19 +22,20 @@ var __exportStar = this && this.__exportStar || function (m, exports) {
22
22
  Object.defineProperty(exports, "__esModule", {
23
23
  value: true
24
24
  });
25
- exports.BUILD_TYPES = void 0;
25
+ exports.WORKSPACE_BUILD_TYPES = exports.BUILD_TYPES = void 0;
26
26
  var custom_1 = require("./custom");
27
27
  var node_1 = require("./node");
28
28
  var rails_1 = require("./rails");
29
- __exportStar(require("./types"), exports);
30
29
  __exportStar(require("./node"), exports);
30
+ __exportStar(require("./types"), exports);
31
31
  exports.BUILD_TYPES = {
32
32
  node: {
33
33
  jobs: node_1.createNodeJobs,
34
34
  defaults: function () {
35
35
  return {
36
36
  buildCommand: "yarn build",
37
- startCommand: "yarn start"
37
+ startCommand: "yarn start",
38
+ artifactsPaths: ["dist", ".next"]
38
39
  };
39
40
  }
40
41
  },
@@ -42,7 +43,8 @@ exports.BUILD_TYPES = {
42
43
  jobs: node_1.createNodeJobs,
43
44
  defaults: function () {
44
45
  return {
45
- buildCommand: "yarn build"
46
+ buildCommand: "yarn build",
47
+ artifactsPaths: ["dist"]
46
48
  };
47
49
  }
48
50
  },
@@ -50,7 +52,8 @@ exports.BUILD_TYPES = {
50
52
  jobs: node_1.createStorybookJobs,
51
53
  defaults: function () {
52
54
  return {
53
- buildCommand: ["yarn build-storybook --quiet -o ./dist"]
55
+ buildCommand: ["yarn build-storybook --quiet -o ./dist"],
56
+ artifactsPaths: ["dist"]
54
57
  };
55
58
  }
56
59
  },
@@ -58,14 +61,17 @@ exports.BUILD_TYPES = {
58
61
  jobs: node_1.createMeteorJobs,
59
62
  defaults: function () {
60
63
  return {
61
- startCommand: "node main.js"
64
+ startCommand: "node main.js",
65
+ artifactsPaths: ["dist"]
62
66
  };
63
67
  }
64
68
  },
65
69
  custom: {
66
70
  jobs: custom_1.createCustomJobs,
67
71
  defaults: function () {
68
- return {};
72
+ return {
73
+ artifactsPaths: ["dist"]
74
+ };
69
75
  }
70
76
  },
71
77
  rails: {
@@ -80,4 +86,20 @@ exports.BUILD_TYPES = {
80
86
  };
81
87
  }
82
88
  }
89
+ };
90
+ exports.WORKSPACE_BUILD_TYPES = {
91
+ node: {
92
+ jobs: node_1.createNodeJobs,
93
+ defaults: function () {
94
+ return {
95
+ buildCommand: "yarn build",
96
+ lint: {
97
+ command: "yarn lint"
98
+ },
99
+ test: {
100
+ command: "yarn test"
101
+ }
102
+ };
103
+ }
104
+ }
83
105
  };
@@ -1,3 +1,8 @@
1
- import type { ComponentContext } from "../../types/context";
1
+ import type { BuildContextStandalone, WorkspaceContext } from "../../types/context";
2
+ import { type ComponentContext } from "../../types/context";
2
3
  import type { CatladderJob } from "../../types/jobs";
3
- export declare const createNodeBuildJobs: (context: ComponentContext) => CatladderJob[];
4
+ import type { AppBuildJobDefinition } from "../base/createAppBuildJob";
5
+ import type { DockerBuildJobDefinition } from "../docker";
6
+ export declare const createNodeBuildJobs: (context: ComponentContext | WorkspaceContext) => CatladderJob[];
7
+ export declare const createNodeBuildJobDefinition: (context: ComponentContext<BuildContextStandalone> | WorkspaceContext) => AppBuildJobDefinition | undefined;
8
+ export declare const createNodeDockerJobDefinition: (context: ComponentContext) => DockerBuildJobDefinition;
@@ -34,9 +34,9 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
34
34
  Object.defineProperty(exports, "__esModule", {
35
35
  value: true
36
36
  });
37
- exports.createNodeBuildJobs = void 0;
38
- var path_1 = require("path");
37
+ exports.createNodeDockerJobDefinition = exports.createNodeBuildJobDefinition = exports.createNodeBuildJobs = void 0;
39
38
  var runner_1 = require("../../runner");
39
+ var context_1 = require("../../types/context");
40
40
  var utils_1 = require("../../utils");
41
41
  var base_1 = require("../base");
42
42
  var docker_1 = require("../docker");
@@ -45,42 +45,49 @@ var cache_1 = require("./cache");
45
45
  var constants_1 = require("./constants");
46
46
  var yarn_1 = require("./yarn");
47
47
  var createNodeBuildJobs = function (context) {
48
- var _a, _b, _c, _d, _e;
48
+ if (context.type === "workspace") {
49
+ return (0, base_1.createWorkspaceBuildJobs)(context, {
50
+ appBuild: (0, exports.createNodeBuildJobDefinition)(context)
51
+ });
52
+ }
53
+ return (0, base_1.createComponentBuildJobs)(context, {
54
+ appBuild: (0, context_1.componentContextIsStandaloneBuild)(context) ? (0, exports.createNodeBuildJobDefinition)(context) : undefined,
55
+ dockerBuild: (0, exports.createNodeDockerJobDefinition)(context)
56
+ });
57
+ };
58
+ exports.createNodeBuildJobs = createNodeBuildJobs;
59
+ var createNodeBuildJobDefinition = function (context) {
60
+ var _a, _b, _c;
49
61
  var buildConfig = context.build.config;
50
62
  if (!(0, types_1.isOfBuildType)(buildConfig, "node", "node-static", "storybook")) {
51
63
  throw new Error("deploy config is not node, node-static or storybook");
52
64
  }
65
+ if (buildConfig.buildCommand === null) return undefined;
53
66
  var defaultImage = (0, runner_1.getRunnerImage)("jobs-default");
54
67
  var yarnInstall = (0, yarn_1.getYarnInstall)(context);
55
- return (0, base_1.createBuildJobs)(context, {
56
- appBuild: buildConfig.buildCommand !== null ? {
57
- image: (_a = buildConfig.jobImage) !== null && _a !== void 0 ? _a : defaultImage,
58
- runnerVariables: constants_1.NODE_RUNNER_BUILD_VARIABLES,
59
- cache: __spreadArray(__spreadArray(__spreadArray([], __read((_b = (0, utils_1.ensureArray)(buildConfig.jobCache)) !== null && _b !== void 0 ? _b : []), false), __read((0, cache_1.getNodeCache)(context)), false), __read((0, cache_1.getNextCache)(context)), false),
60
- script: __spreadArray(__spreadArray([], __read(yarnInstall), false), __read((_c = (0, utils_1.ensureArray)(buildConfig.buildCommand)) !== null && _c !== void 0 ? _c : []), false),
61
- artifacts: {
62
- paths: __spreadArray([context.build.dir], __read((_d = context.packageManagerInfo.currentWorkspaceDependencies) !== null && _d !== void 0 ? _d : []), false).flatMap(function (dir) {
63
- var _a, _b;
64
- return __spreadArray([(0, path_1.join)(dir, "__build_info.json"), (0, path_1.join)(dir, "dist"), (0, path_1.join)(dir, ".next")], __read((_b = (_a = buildConfig.artifactsPaths) === null || _a === void 0 ? void 0 : _a.map(function (path) {
65
- return (0, path_1.join)(dir, path);
66
- })) !== null && _b !== void 0 ? _b : []), false);
67
- }),
68
- expire_in: "1 day",
69
- when: "always"
70
- },
71
- jobTags: buildConfig.jobTags
72
- } : undefined,
73
- dockerBuild: {
74
- script: (0, docker_1.getDockerBuildScriptWithBuiltInDockerFile)(context, buildConfig.type === "node-static" || buildConfig.type === "storybook" ? "nginx" : "node"),
75
- cache: __spreadArray([], __read((0, cache_1.getYarnCache)(context, "pull")), false),
76
- variables: {
77
- // only required for non static
78
- DOCKER_COPY_AND_INSTALL_APP: (0, yarn_1.getDockerAppCopyAndBuildScript)(context),
79
- DOCKER_COPY_WORKSPACE_FILES: (_e = context.packageManagerInfo.pathsToCopyInDocker.map(function (dir) {
80
- return "COPY --chown=node:node ".concat(dir, " /app/").concat(dir);
81
- })) === null || _e === void 0 ? void 0 : _e.join("\n")
82
- }
68
+ return {
69
+ image: (_a = buildConfig.jobImage) !== null && _a !== void 0 ? _a : defaultImage,
70
+ runnerVariables: constants_1.NODE_RUNNER_BUILD_VARIABLES,
71
+ cache: __spreadArray(__spreadArray(__spreadArray([], __read((_b = (0, utils_1.ensureArray)(buildConfig.jobCache)) !== null && _b !== void 0 ? _b : []), false), __read((0, cache_1.getNodeCache)(context)), false), __read((0, cache_1.getNextCache)(context)), false),
72
+ script: __spreadArray(__spreadArray([], __read(yarnInstall), false), __read((_c = (0, utils_1.ensureArray)(buildConfig.buildCommand)) !== null && _c !== void 0 ? _c : []), false),
73
+ jobTags: buildConfig.jobTags
74
+ };
75
+ };
76
+ exports.createNodeBuildJobDefinition = createNodeBuildJobDefinition;
77
+ var createNodeDockerJobDefinition = function (context) {
78
+ var _a, _b;
79
+ // get the default docker built-in type based on the build type
80
+ var dockerDefaultBuiltIn = context.build.buildType === "node-static" || context.build.buildType === "storybook" ? "nginx" : "node";
81
+ return {
82
+ script: (0, docker_1.getDockerBuildScriptWithBuiltInDockerFile)(context, dockerDefaultBuiltIn),
83
+ cache: __spreadArray([], __read((0, cache_1.getYarnCache)(context, "pull")), false),
84
+ variables: {
85
+ // only required for non static
86
+ DOCKER_COPY_AND_INSTALL_APP: (0, yarn_1.getDockerAppCopyAndBuildScript)(context),
87
+ DOCKER_COPY_WORKSPACE_FILES: (_b = (_a = context.packageManagerInfo) === null || _a === void 0 ? void 0 : _a.pathsToCopyInDocker.map(function (dir) {
88
+ return "COPY --chown=node:node ".concat(dir, " /app/").concat(dir);
89
+ })) === null || _b === void 0 ? void 0 : _b.join("\n")
83
90
  }
84
- });
91
+ };
85
92
  };
86
- exports.createNodeBuildJobs = createNodeBuildJobs;
93
+ exports.createNodeDockerJobDefinition = createNodeDockerJobDefinition;
@@ -1,6 +1,6 @@
1
- import type { ComponentContext, Context } from "../../types/context";
1
+ import type { Context } from "../../types/context";
2
2
  import type { GitlabJobCache } from "../../types/gitlab-types";
3
3
  export declare const getYarnCache: (context: Context, policy?: string) => GitlabJobCache[];
4
4
  export declare const getNodeModulesCache: (context: Context, policy?: string) => GitlabJobCache[];
5
5
  export declare const getNodeCache: (context: Context, policy?: string) => GitlabJobCache[];
6
- export declare const getNextCache: (context: ComponentContext) => GitlabJobCache[];
6
+ export declare const getNextCache: (context: Context) => GitlabJobCache[];
@@ -47,7 +47,7 @@ var getYarnCache = function (context, policy) {
47
47
  if (policy === void 0) {
48
48
  policy = "pull-push";
49
49
  }
50
- var componentIsInWorkspace = context.packageManagerInfo.componentIsInWorkspace;
50
+ var componentIsInWorkspace = context.type === "component" && context.packageManagerInfo.componentIsInWorkspace;
51
51
  return [componentIsInWorkspace ? {
52
52
  key: "yarn",
53
53
  policy: policy,
@@ -64,7 +64,7 @@ var getNodeModulesCache = function (context, policy) {
64
64
  if (policy === void 0) {
65
65
  policy = "pull-push";
66
66
  }
67
- var componentIsInWorkspace = context.packageManagerInfo.componentIsInWorkspace;
67
+ var componentIsInWorkspace = context.type === "component" && context.packageManagerInfo.componentIsInWorkspace;
68
68
  // We intentionally do not use the contents of yarn.lock as a cache key, as yarn install should always guarantee that the files are updated, but it can still use part of the cache if not all packages are up-to-date.
69
69
  // It would slow down all pipelines whenever one adds a new dependency as it will need to download all node_modules again.
70
70
  return [{
@@ -86,10 +86,14 @@ var getNodeCache = function (context, policy) {
86
86
  };
87
87
  exports.getNodeCache = getNodeCache;
88
88
  var getNextCache = function (context) {
89
+ var key = context.name + "-next-cache";
90
+ var paths = context.build.getComponentDirs("direct").map(function (c) {
91
+ return (0, path_1.join)(c, ".next/cache");
92
+ });
89
93
  return [{
90
- key: context.componentName + "-next-cache",
94
+ key: key,
91
95
  policy: "pull-push",
92
- paths: [context.build.dir + "/.next/cache/"]
96
+ paths: paths
93
97
  }];
94
98
  };
95
99
  exports.getNextCache = getNextCache;
@@ -1,5 +1,5 @@
1
- import type { ComponentContext } from "../../types/context";
1
+ import type { ComponentContext, WorkspaceContext } from "../../types/context";
2
2
  import type { CatladderJob } from "../../types/jobs";
3
- export declare const createNodeJobs: (context: ComponentContext) => CatladderJob[];
3
+ export declare const createNodeJobs: (context: ComponentContext | WorkspaceContext) => CatladderJob[];
4
4
  export declare const createStorybookJobs: (context: ComponentContext) => CatladderJob[];
5
5
  export declare const createMeteorJobs: (context: ComponentContext) => CatladderJob[];
@@ -44,7 +44,7 @@ var cache_1 = require("./cache");
44
44
  var yarn_1 = require("./yarn");
45
45
  var getMeteorCache = function (context) {
46
46
  return [{
47
- key: context.componentName + "meteor-build-cache",
47
+ key: context.name + "meteor-build-cache",
48
48
  policy: "pull-push",
49
49
  paths: [(0, path_1.join)(context.build.dir, ".meteor/local/resolver-result-cache.json"), (0, path_1.join)(context.build.dir, ".meteor/local/plugin-cache"), (0, path_1.join)(context.build.dir, ".meteor/local/isopacks"), (0, path_1.join)(context.build.dir, ".meteor/local/bundler-cache/scanner")]
50
50
  }];
@@ -55,7 +55,7 @@ var createMeteorBuildJobs = function (context) {
55
55
  throw new Error("deploy config is not meteor");
56
56
  }
57
57
  var yarnInstall = (0, yarn_1.getYarnInstall)(context);
58
- return (0, base_1.createBuildJobs)(context, {
58
+ return (0, base_1.createComponentBuildJobs)(context, {
59
59
  appBuild: buildConfig.buildCommand !== null ? {
60
60
  cache: __spreadArray(__spreadArray([], __read((0, cache_1.getNodeCache)(context)), false), __read(getMeteorCache(context)), false),
61
61
  image: (0, runner_1.getRunnerImage)("jobs-meteor"),
@@ -63,10 +63,7 @@ var createMeteorBuildJobs = function (context) {
63
63
  METEOR_DISABLE_OPTIMISTIC_CACHING: "1" // see https://forums.meteor.com/t/veeery-long-building-time-inside-docker-container/58673/17?u=macrozone
64
64
  },
65
65
 
66
- script: __spreadArray(__spreadArray([], __read(yarnInstall), false), ['echo "add healthcheck package"', "meteor add panter:healthroute --allow-superuser", "meteor add qualia:prod-shell --allow-superuser", 'TOOL_NODE_FLAGS="--max_old_space_size=3584 --min_semi_space_size=8 --max_semi_space_size=256 --optimize_for_size" meteor build ./dist --architecture os.linux.x86_64 --allow-superuser --server-only --directory', "cp ./__build_info.json ./dist/bundle/programs/server"], false),
67
- artifacts: {
68
- paths: [context.build.dir + "/__build_info.json", context.build.dir + "/dist"]
69
- }
66
+ script: __spreadArray(__spreadArray([], __read(yarnInstall), false), ['echo "add healthcheck package"', "meteor add panter:healthroute --allow-superuser", "meteor add qualia:prod-shell --allow-superuser", 'TOOL_NODE_FLAGS="--max_old_space_size=3584 --min_semi_space_size=8 --max_semi_space_size=256 --optimize_for_size" meteor build ./dist --architecture os.linux.x86_64 --allow-superuser --server-only --directory', "cp ./__build_info.json ./dist/bundle/programs/server"], false)
70
67
  } : undefined,
71
68
  dockerBuild: {
72
69
  script: (0, docker_1.getDockerBuildScriptWithBuiltInDockerFile)(context, "meteor"),
@@ -1,3 +1,4 @@
1
- import type { ComponentContext } from "../../types/context";
1
+ import type { WorkspaceContext } from "../../types/context";
2
+ import { type ComponentContext } from "../../types/context";
2
3
  import type { CatladderJob } from "../../types/jobs";
3
- export declare const createNodeTestJobs: (context: ComponentContext) => CatladderJob[];
4
+ export declare const createNodeTestJobs: (context: ComponentContext | WorkspaceContext) => CatladderJob[];