@catladder/cli 0.0.0-next-d71e41ba → 0.0.0-next-dccc0a36

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 (91) hide show
  1. package/dist/apps/cli/src/scripts/generateCliSkillReference.js +3 -2
  2. package/dist/apps/cli/src/scripts/generateCliSkillReference.js.map +1 -1
  3. package/dist/bundles/catenv/index.js +790 -272
  4. package/dist/bundles/cli/index.js +790 -272
  5. package/dist/bundles/runner-images/docker-build/scripts/ensureNodeDockerfile +8 -1
  6. package/dist/bundles/runner-images/jobs-default/Dockerfile +4 -0
  7. package/dist/bundles/skills/catladder-builds/SKILL.md +68 -5
  8. package/dist/bundles/skills/catladder-builds/references/build-types.md +8 -6
  9. package/dist/bundles/skills/catladder-cli/references/commands.md +3 -2
  10. package/dist/bundles/skills/catladder-config/SKILL.md +5 -0
  11. package/dist/bundles/skills/catladder-deploys/SKILL.md +1 -1
  12. package/dist/bundles/skills/catladder-deploys/references/deploy-types.md +2 -2
  13. package/dist/bundles/skills/catladder-pipelines/SKILL.md +16 -4
  14. package/dist/packages/pipeline/src/backends/github/GithubBackend.js +4 -4
  15. package/dist/packages/pipeline/src/backends/github/GithubBackend.js.map +1 -1
  16. package/dist/packages/pipeline/src/backends/gitlab/GitlabBackend.js +4 -4
  17. package/dist/packages/pipeline/src/backends/gitlab/GitlabBackend.js.map +1 -1
  18. package/dist/packages/pipeline/src/build/base/createAppBuildJob.js +2 -2
  19. package/dist/packages/pipeline/src/build/base/createAppBuildJob.js.map +1 -1
  20. package/dist/packages/pipeline/src/build/index.d.ts +3 -3
  21. package/dist/packages/pipeline/src/build/index.js +16 -11
  22. package/dist/packages/pipeline/src/build/index.js.map +1 -1
  23. package/dist/packages/pipeline/src/build/node/buildJob.js +49 -8
  24. package/dist/packages/pipeline/src/build/node/buildJob.js.map +1 -1
  25. package/dist/packages/pipeline/src/build/node/cache.d.ts +5 -0
  26. package/dist/packages/pipeline/src/build/node/cache.js +58 -19
  27. package/dist/packages/pipeline/src/build/node/cache.js.map +1 -1
  28. package/dist/packages/pipeline/src/build/node/meteor.js +9 -4
  29. package/dist/packages/pipeline/src/build/node/meteor.js.map +1 -1
  30. package/dist/packages/pipeline/src/build/node/packageManagerInstall.d.ts +14 -0
  31. package/dist/packages/pipeline/src/build/node/packageManagerInstall.js +145 -0
  32. package/dist/packages/pipeline/src/build/node/packageManagerInstall.js.map +1 -0
  33. package/dist/packages/pipeline/src/build/node/testJob.js +9 -11
  34. package/dist/packages/pipeline/src/build/node/testJob.js.map +1 -1
  35. package/dist/packages/pipeline/src/build/types.d.ts +6 -5
  36. package/dist/packages/pipeline/src/build/types.js.map +1 -1
  37. package/dist/packages/pipeline/src/context/createComponentContext.js +3 -2
  38. package/dist/packages/pipeline/src/context/createComponentContext.js.map +1 -1
  39. package/dist/packages/pipeline/src/context/createWorkspaceContext.js +3 -2
  40. package/dist/packages/pipeline/src/context/createWorkspaceContext.js.map +1 -1
  41. package/dist/packages/pipeline/src/customImages/hash.d.ts +9 -0
  42. package/dist/packages/pipeline/src/customImages/hash.js +41 -16
  43. package/dist/packages/pipeline/src/customImages/hash.js.map +1 -1
  44. package/dist/packages/pipeline/src/customImages/jobImagesPlan.d.ts +23 -5
  45. package/dist/packages/pipeline/src/customImages/jobImagesPlan.js +177 -43
  46. package/dist/packages/pipeline/src/customImages/jobImagesPlan.js.map +1 -1
  47. package/dist/packages/pipeline/src/customImages/projectImages.d.ts +67 -0
  48. package/dist/packages/pipeline/src/customImages/projectImages.js +9 -0
  49. package/dist/packages/pipeline/src/customImages/projectImages.js.map +1 -0
  50. package/dist/packages/pipeline/src/deploy/custom/deployJob.js +7 -6
  51. package/dist/packages/pipeline/src/deploy/custom/deployJob.js.map +1 -1
  52. package/dist/packages/pipeline/src/deploy/pages/deployJob.js +6 -4
  53. package/dist/packages/pipeline/src/deploy/pages/deployJob.js.map +1 -1
  54. package/dist/packages/pipeline/src/deploy/types/custom.d.ts +9 -3
  55. package/dist/packages/pipeline/src/deploy/types/index.d.ts +4 -4
  56. package/dist/packages/pipeline/src/deploy/types/pages.d.ts +9 -3
  57. package/dist/packages/pipeline/src/index.d.ts +2 -0
  58. package/dist/packages/pipeline/src/index.js +2 -0
  59. package/dist/packages/pipeline/src/index.js.map +1 -1
  60. package/dist/packages/pipeline/src/pipeline/detectPackageManager.d.ts +18 -0
  61. package/dist/packages/pipeline/src/pipeline/detectPackageManager.js +76 -0
  62. package/dist/packages/pipeline/src/pipeline/detectPackageManager.js.map +1 -0
  63. package/dist/packages/pipeline/src/pipeline/packageManager.d.ts +1 -1
  64. package/dist/packages/pipeline/src/pipeline/packageManager.js +43 -9
  65. package/dist/packages/pipeline/src/pipeline/packageManager.js.map +1 -1
  66. package/dist/packages/pipeline/src/pipeline/pnpm/pnpmUtils.d.ts +14 -0
  67. package/dist/packages/pipeline/src/pipeline/pnpm/pnpmUtils.js +93 -0
  68. package/dist/packages/pipeline/src/pipeline/pnpm/pnpmUtils.js.map +1 -0
  69. package/dist/packages/pipeline/src/types/config.d.ts +16 -1
  70. package/dist/packages/pipeline/src/types/config.js.map +1 -1
  71. package/dist/packages/pipeline/src/types/context.d.ts +11 -3
  72. package/dist/packages/pipeline/src/types/context.js.map +1 -1
  73. package/dist/packages/pipeline/src/types/jobs.d.ts +2 -1
  74. package/dist/packages/pipeline/src/types/jobs.js.map +1 -1
  75. package/dist/packages/pipeline/src/verify/createVerifyJobs.js +5 -5
  76. package/dist/packages/pipeline/src/verify/createVerifyJobs.js.map +1 -1
  77. package/dist/runner-images/docker-build/scripts/ensureNodeDockerfile +8 -1
  78. package/dist/runner-images/jobs-default/Dockerfile +4 -0
  79. package/dist/skills/catladder-builds/SKILL.md +68 -5
  80. package/dist/skills/catladder-builds/references/build-types.md +8 -6
  81. package/dist/skills/catladder-cli/references/commands.md +3 -2
  82. package/dist/skills/catladder-config/SKILL.md +5 -0
  83. package/dist/skills/catladder-deploys/SKILL.md +1 -1
  84. package/dist/skills/catladder-deploys/references/deploy-types.md +2 -2
  85. package/dist/skills/catladder-pipelines/SKILL.md +16 -4
  86. package/dist/tsconfig.tsbuildinfo +1 -1
  87. package/package.json +1 -1
  88. package/src/scripts/generateCliSkillReference.ts +3 -2
  89. package/dist/packages/pipeline/src/build/node/yarn.d.ts +0 -8
  90. package/dist/packages/pipeline/src/build/node/yarn.js +0 -78
  91. package/dist/packages/pipeline/src/build/node/yarn.js.map +0 -1
@@ -14,6 +14,7 @@ const createComponentContext = async (ctx) => {
14
14
  throw new Error("componentName may only contain lower case letters, numbers and -");
15
15
  }
16
16
  const packageManagerInfoPromise = (0, packageManager_1.getPackageManagerInfoForComponent)(ctx.config, ctx.componentName);
17
+ const { type: packageManagerType } = await packageManagerInfoPromise;
17
18
  const envContext = (0, getEnvironmentContext_1.getEnvironmentContext)(ctx);
18
19
  const componentConfigWithoutDefaults = envContext.envConfigRaw;
19
20
  const resolvedBuildType = componentConfigWithoutDefaults.build === false
@@ -27,12 +28,12 @@ const createComponentContext = async (ctx) => {
27
28
  const defaults = componentConfigWithoutDefaults.deploy
28
29
  ? {
29
30
  build: resolvedBuildType &&
30
- build_1.BUILD_TYPES[resolvedBuildType].defaults(envContext),
31
+ build_1.BUILD_TYPES[resolvedBuildType].defaults(envContext, packageManagerType),
31
32
  deploy: deploy_1.DEPLOY_TYPES[componentConfigWithoutDefaults.deploy.type].defaults(envContext),
32
33
  }
33
34
  : {
34
35
  build: resolvedBuildType &&
35
- build_1.BUILD_TYPES[resolvedBuildType].defaults(envContext),
36
+ build_1.BUILD_TYPES[resolvedBuildType].defaults(envContext, packageManagerType),
36
37
  deploy: {},
37
38
  };
38
39
  const componentConfig = (0, utils_1.mergeWithMergingArrays)(defaults, componentConfigWithoutDefaults);
@@ -1 +1 @@
1
- {"version":3,"file":"createComponentContext.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/context/createComponentContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createComponentContext.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/context/createComponentContext.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,8 @@ async function createWorkspaceContext({ env, components, workspaceName, config,
11
11
  if (!workspaceConfigRaw) {
12
12
  throw new Error(`Workspace ${workspaceName} not found in config`);
13
13
  }
14
- const defaults = __1.WORKSPACE_BUILD_TYPES[workspaceConfigRaw.type].defaults();
14
+ const packageManagerInfo = (0, packageManager_1.getPackageManagerInfoBase)(config);
15
+ const defaults = __1.WORKSPACE_BUILD_TYPES[workspaceConfigRaw.type].defaults((await packageManagerInfo).type);
15
16
  const workspaceConfig = (0, utils_1.mergeWithMergingArrays)(defaults, workspaceConfigRaw);
16
17
  return {
17
18
  name: workspaceName,
@@ -22,7 +23,7 @@ async function createWorkspaceContext({ env, components, workspaceName, config,
22
23
  env,
23
24
  components,
24
25
  fullConfig: config,
25
- packageManagerInfo: (0, packageManager_1.getPackageManagerInfoBase)(),
26
+ packageManagerInfo,
26
27
  build: {
27
28
  type: "workspace",
28
29
  dir: (_b = workspaceConfig.dir) !== null && _b !== void 0 ? _b : ".",
@@ -1 +1 @@
1
- {"version":3,"file":"createWorkspaceContext.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/context/createWorkspaceContext.ts"],"names":[],"mappings":";;;AAAA,0BAMY;AACZ,+DAAuE;AACvE,oCAAkD;AAClD,yCAAiC;AAE1B,KAAK,UAAU,sBAAsB,CAAC,EAC3C,GAAG,EACH,UAAU,EACV,aAAa,EACb,MAAM,EACN,YAAY,EACZ,OAAO,GAQR;;IACC,MAAM,kBAAkB,GAAG,MAAA,MAAM,CAAC,MAAM,0CAAG,aAAa,CAAC,CAAC;IAC1D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,aAAa,aAAa,sBAAsB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAG,yBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE3E,MAAM,eAAe,GAAG,IAAA,8BAAsB,EAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,YAAY;QACZ,OAAO;QACP,IAAI,EAAE,WAAW;QAEjB,eAAe;QAEf,GAAG;QACH,UAAU;QACV,UAAU,EAAE,MAAM;QAClB,kBAAkB,EAAE,IAAA,0CAAyB,GAAE;QAC/C,KAAK,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,MAAA,eAAe,CAAC,GAAG,mCAAI,GAAG;YAC/B,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/B,IAAA,gBAAI,EACF,CACE,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACtD,CACF,CAAC,IAAI,EAAE,CACT;YACH,SAAS,EAAE,eAAe,CAAC,IAAI;YAC/B,MAAM,EAAE,eAAe;SACxB;KACF,CAAC;AACJ,CAAC;AAlDD,wDAkDC"}
1
+ {"version":3,"file":"createWorkspaceContext.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/context/createWorkspaceContext.ts"],"names":[],"mappings":";;;AAAA,0BAMY;AACZ,+DAAuE;AACvE,oCAAkD;AAClD,yCAAiC;AAE1B,KAAK,UAAU,sBAAsB,CAAC,EAC3C,GAAG,EACH,UAAU,EACV,aAAa,EACb,MAAM,EACN,YAAY,EACZ,OAAO,GAQR;;IACC,MAAM,kBAAkB,GAAG,MAAA,MAAM,CAAC,MAAM,0CAAG,aAAa,CAAC,CAAC;IAC1D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,aAAa,aAAa,sBAAsB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAA,0CAAyB,EAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,yBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CACtE,CAAC,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAChC,CAAC;IAEF,MAAM,eAAe,GAAG,IAAA,8BAAsB,EAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,YAAY;QACZ,OAAO;QACP,IAAI,EAAE,WAAW;QAEjB,eAAe;QAEf,GAAG;QACH,UAAU;QACV,UAAU,EAAE,MAAM;QAClB,kBAAkB;QAClB,KAAK,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,MAAA,eAAe,CAAC,GAAG,mCAAI,GAAG;YAC/B,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/B,IAAA,gBAAI,EACF,CACE,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACtD,CACF,CAAC,IAAI,EAAE,CACT;YACH,SAAS,EAAE,eAAe,CAAC,IAAI;YAC/B,MAAM,EAAE,eAAe;SACxB;KACF,CAAC;AACJ,CAAC;AArDD,wDAqDC"}
@@ -13,3 +13,12 @@ export type CustomImageHashResult = {
13
13
  watchedPaths: string[];
14
14
  };
15
15
  export declare function computeCustomImageHash(config: ImageHashConfig): CustomImageHashResult;
16
+ /**
17
+ * the hash of an image defined by an inline Dockerfile: its content
18
+ * stands in for the definition dir. The build context is deliberately
19
+ * NOT hashed (it may be the whole repository) — `hashExtraPaths` is how
20
+ * context files opt into the hash.
21
+ */
22
+ export declare function computeInlineImageHash(config: Pick<ImageHashConfig, "hashExtraPaths" | "buildArgs"> & {
23
+ dockerfileContent: string;
24
+ }): CustomImageHashResult;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.computeCustomImageHash = void 0;
3
+ exports.computeInlineImageHash = exports.computeCustomImageHash = void 0;
4
4
  const crypto_1 = require("crypto");
5
5
  const fs_1 = require("fs");
6
6
  const path_1 = require("path");
@@ -21,6 +21,29 @@ function listFilesRecursive(dir) {
21
21
  })
22
22
  .sort();
23
23
  }
24
+ /**
25
+ * the parts every image definition hashes on top of its content:
26
+ * files outside the definition, and the build args
27
+ */
28
+ function hashExtras(hash, config) {
29
+ const watchedPaths = [];
30
+ // Hash extra paths (for files outside the dir)
31
+ if (config.hashExtraPaths) {
32
+ // Extra paths are literal file paths (not globs) for simplicity
33
+ const extraFiles = [...config.hashExtraPaths].sort();
34
+ for (const file of extraFiles) {
35
+ hash.update(file);
36
+ hash.update((0, fs_1.readFileSync)(file));
37
+ }
38
+ watchedPaths.push(...config.hashExtraPaths);
39
+ }
40
+ // Hash build args (sorted keys for determinism)
41
+ if (config.buildArgs) {
42
+ const sorted = Object.entries(config.buildArgs).sort(([a], [b]) => a.localeCompare(b));
43
+ hash.update(JSON.stringify(sorted));
44
+ }
45
+ return watchedPaths;
46
+ }
24
47
  function computeCustomImageHash(config) {
25
48
  var _a;
26
49
  const hash = (0, crypto_1.createHash)("sha256");
@@ -41,25 +64,27 @@ function computeCustomImageHash(config) {
41
64
  }
42
65
  watchedPaths.push(`${extraDir}/**/*`);
43
66
  }
44
- // Hash extra paths (for files outside the dir)
45
- if (config.hashExtraPaths) {
46
- // Extra paths are literal file paths (not globs) for simplicity
47
- const extraFiles = [...config.hashExtraPaths].sort();
48
- for (const file of extraFiles) {
49
- hash.update(file);
50
- hash.update((0, fs_1.readFileSync)(file));
51
- }
52
- watchedPaths.push(...config.hashExtraPaths);
53
- }
54
- // Hash build args (sorted keys for determinism)
55
- if (config.buildArgs) {
56
- const sorted = Object.entries(config.buildArgs).sort(([a], [b]) => a.localeCompare(b));
57
- hash.update(JSON.stringify(sorted));
58
- }
67
+ watchedPaths.push(...hashExtras(hash, config));
59
68
  return {
60
69
  hash: hash.digest("hex").slice(0, 12),
61
70
  watchedPaths,
62
71
  };
63
72
  }
64
73
  exports.computeCustomImageHash = computeCustomImageHash;
74
+ /**
75
+ * the hash of an image defined by an inline Dockerfile: its content
76
+ * stands in for the definition dir. The build context is deliberately
77
+ * NOT hashed (it may be the whole repository) — `hashExtraPaths` is how
78
+ * context files opt into the hash.
79
+ */
80
+ function computeInlineImageHash(config) {
81
+ const hash = (0, crypto_1.createHash)("sha256");
82
+ hash.update(config.dockerfileContent);
83
+ const watchedPaths = hashExtras(hash, config);
84
+ return {
85
+ hash: hash.digest("hex").slice(0, 12),
86
+ watchedPaths,
87
+ };
88
+ }
89
+ exports.computeInlineImageHash = computeInlineImageHash;
65
90
  //# sourceMappingURL=hash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/customImages/hash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/customImages/hash.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { CatladderImageRef } from "../runner";
2
2
  import type { GitlabJobImage, PipelineType } from "../types";
3
3
  import type { CatladderJob, CatladderJobNeed } from "../types/jobs";
4
+ import type { ProjectImageConfig, ProjectImageRef } from "./projectImages";
4
5
  export declare const GENERATED_IMAGES_FOLDER = ".catladder-generated/images";
5
6
  export type ResolvedJobImage = {
6
7
  /** the concrete image url */
@@ -14,6 +15,11 @@ export type GeneratedImageFile = {
14
15
  path: string;
15
16
  content: string;
16
17
  };
18
+ /**
19
+ * where inline project Dockerfiles are materialized — a subfolder, so a
20
+ * project image can carry the same name as a shipped one
21
+ */
22
+ export declare const PROJECT_IMAGES_FOLDER = ".catladder-generated/images/project";
17
23
  /**
18
24
  * plans the catladder job images of one backend run: resolves image
19
25
  * references, collects the image build jobs, and the image definitions
@@ -25,8 +31,10 @@ export type GeneratedImageFile = {
25
31
  */
26
32
  export declare class JobImagesPlan {
27
33
  private readonly pipelineType;
34
+ private readonly projectImages;
28
35
  private used;
29
- constructor(pipelineType: PipelineType);
36
+ private usedProject;
37
+ constructor(pipelineType: PipelineType, projectImages?: Record<string, ProjectImageConfig>);
30
38
  /**
31
39
  * resolves a job image (marker or concrete) to a concrete image url
32
40
  * plus the build job dependency
@@ -37,21 +45,31 @@ export declare class JobImagesPlan {
37
45
  fromRepoRegistry?: boolean;
38
46
  };
39
47
  resolveRef(ref: CatladderImageRef): ResolvedJobImage;
48
+ resolveProjectRef(ref: ProjectImageRef): ResolvedJobImage;
40
49
  /**
41
50
  * the registry image prefix. On github, container images can't use
42
51
  * runtime env vars — the expression form is required.
43
52
  */
44
53
  private registryImageRef;
54
+ private useProject;
55
+ /**
56
+ * the source-dependent half of a project image: an inline Dockerfile
57
+ * is materialized into the generated files and hashed by its content,
58
+ * a directory is hashed and watched in place
59
+ */
60
+ private planProjectSource;
45
61
  private use;
46
62
  /**
47
63
  * the image build jobs for all used images
48
64
  */
49
65
  getEnsureJobs(): CatladderJob[];
50
- private createEnsureJob;
66
+ private createImageBuildJob;
51
67
  /**
52
- * the image definitions of all used images, materialized into the
53
- * generated files (so pipelines build from committed, reviewable
54
- * files and gitlab's rules:changes can watch them)
68
+ * the image definitions to materialize into the generated files (so
69
+ * pipelines build from committed, reviewable files and gitlab's
70
+ * rules:changes can watch them): the definitions catladder ships and
71
+ * the project's inline Dockerfiles. A project image directory is
72
+ * already committed and contributes nothing.
55
73
  */
56
74
  getGeneratedFiles(): GeneratedImageFile[];
57
75
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JobImagesPlan = exports.GENERATED_IMAGES_FOLDER = void 0;
3
+ exports.JobImagesPlan = exports.PROJECT_IMAGES_FOLDER = exports.GENERATED_IMAGES_FOLDER = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const ciVariables_1 = require("../bash/ciVariables");
@@ -8,6 +8,7 @@ const docker_1 = require("../build/docker");
8
8
  const runner_1 = require("../runner");
9
9
  const gitlab_1 = require("../utils/gitlab");
10
10
  const hash_1 = require("./hash");
11
+ const projectImages_1 = require("./projectImages");
11
12
  const shippedImages_1 = require("./shippedImages");
12
13
  exports.GENERATED_IMAGES_FOLDER = ".catladder-generated/images";
13
14
  /**
@@ -15,7 +16,44 @@ exports.GENERATED_IMAGES_FOLDER = ".catladder-generated/images";
15
16
  * catladder image, so building images never depends on one (bootstrap)
16
17
  */
17
18
  const BUILDER_IMAGE = "docker.io/docker:29.5.1";
18
- const ensureJobName = (name) => `🐳 job image ${name}`;
19
+ /**
20
+ * every planned image is consumed the same way: its url, plus an
21
+ * optional dependency on its build job
22
+ */
23
+ const toResolvedJobImage = ({ imageRef, jobName, }) => ({
24
+ image: imageRef,
25
+ fromRepoRegistry: true,
26
+ need: {
27
+ job: jobName,
28
+ artifacts: false,
29
+ optional: true,
30
+ global: true,
31
+ },
32
+ });
33
+ /**
34
+ * materializes an image definition directory into the generated files
35
+ * (used for the definitions catladder ships)
36
+ */
37
+ const materializeDir = (sourceDir, targetDir) => listFilesRecursive(sourceDir).map((file) => ({
38
+ path: (0, path_1.join)(targetDir, file),
39
+ content: (0, fs_1.readFileSync)((0, path_1.join)(sourceDir, file), "utf-8"),
40
+ }));
41
+ // built-in (catladder-shipped) images carry the catladder marker in
42
+ // their job name; project-declared images get the short plain name
43
+ const ensureJobName = (name) => `🐳 catladder image ${name}`;
44
+ const projectEnsureJobName = (name) => `🐳 image ${name}`;
45
+ /**
46
+ * the config file whose content feeds the project image hashes
47
+ * (`buildArgs`, `hashExtraPaths`): the gitlab change detection has to
48
+ * watch it, because a config-only change alters the image tag without
49
+ * touching the image dir
50
+ */
51
+ const CONFIG_FILE = "catladder.ts";
52
+ /**
53
+ * where inline project Dockerfiles are materialized — a subfolder, so a
54
+ * project image can carry the same name as a shipped one
55
+ */
56
+ exports.PROJECT_IMAGES_FOLDER = `${exports.GENERATED_IMAGES_FOLDER}/project`;
19
57
  /**
20
58
  * plans the catladder job images of one backend run: resolves image
21
59
  * references, collects the image build jobs, and the image definitions
@@ -26,33 +64,30 @@ const ensureJobName = (name) => `🐳 job image ${name}`;
26
64
  * Reference-driven: only images actually used by a job are built.
27
65
  */
28
66
  class JobImagesPlan {
29
- constructor(pipelineType) {
67
+ constructor(pipelineType, projectImages = {}) {
30
68
  this.pipelineType = pipelineType;
69
+ this.projectImages = projectImages;
31
70
  this.used = new Map();
71
+ this.usedProject = new Map();
32
72
  }
33
73
  /**
34
74
  * resolves a job image (marker or concrete) to a concrete image url
35
75
  * plus the build job dependency
36
76
  */
37
77
  resolve(image) {
38
- if (!(0, runner_1.isCatladderImageRef)(image)) {
39
- return { image };
78
+ if ((0, runner_1.isCatladderImageRef)(image)) {
79
+ return this.resolveRef(image);
80
+ }
81
+ if ((0, projectImages_1.isProjectImageRef)(image)) {
82
+ return this.resolveProjectRef(image);
40
83
  }
41
- return this.resolveRef(image);
84
+ return { image };
42
85
  }
43
86
  resolveRef(ref) {
44
- const name = ref.catladderImage;
45
- const { hash } = this.use(name);
46
- return {
47
- image: `${this.registryImageRef()}/catladder/${name}:${hash}`,
48
- fromRepoRegistry: true,
49
- need: {
50
- job: ensureJobName(name),
51
- artifacts: false,
52
- optional: true,
53
- global: true,
54
- },
55
- };
87
+ return toResolvedJobImage(this.use(ref.catladderImage));
88
+ }
89
+ resolveProjectRef(ref) {
90
+ return toResolvedJobImage(this.useProject(ref.image));
56
91
  }
57
92
  /**
58
93
  * the registry image prefix. On github, container images can't use
@@ -63,6 +98,85 @@ class JobImagesPlan {
63
98
  ? "ghcr.io/${{ github.repository }}"
64
99
  : `${(0, ciVariables_1.getCiVariable)({ pipelineType: this.pipelineType }, "registryImage")}`;
65
100
  }
101
+ useProject(name) {
102
+ const existing = this.usedProject.get(name);
103
+ if (existing) {
104
+ return existing;
105
+ }
106
+ const imageConfig = this.projectImages[name];
107
+ if (!imageConfig) {
108
+ const declared = Object.keys(this.projectImages);
109
+ throw new Error(`unknown job image "${name}" — ${declared.length > 0
110
+ ? `images declared in config.images: ${declared.join(", ")}`
111
+ : "no images are declared in config.images"}`);
112
+ }
113
+ const source = this.planProjectSource(name, imageConfig);
114
+ const planned = {
115
+ ...source,
116
+ jobName: projectEnsureJobName(name),
117
+ buildArgs: imageConfig.buildArgs,
118
+ // `job-images/` keeps the project's job images apart from its
119
+ // deployable component images (registry root) and build caches
120
+ imageRef: `${this.registryImageRef()}/job-images/${name}:${source.hash}`,
121
+ };
122
+ this.usedProject.set(name, planned);
123
+ return planned;
124
+ }
125
+ /**
126
+ * the source-dependent half of a project image: an inline Dockerfile
127
+ * is materialized into the generated files and hashed by its content,
128
+ * a directory is hashed and watched in place
129
+ */
130
+ planProjectSource(name, imageConfig) {
131
+ var _a, _b;
132
+ if (imageConfig.dockerfile !== undefined) {
133
+ const content = toDockerfileContent(imageConfig.dockerfile);
134
+ const dockerfilePath = `${exports.PROJECT_IMAGES_FOLDER}/${name}/Dockerfile`;
135
+ const { hash, watchedPaths } = (0, hash_1.computeInlineImageHash)({
136
+ dockerfileContent: content,
137
+ hashExtraPaths: imageConfig.hashExtraPaths,
138
+ buildArgs: imageConfig.buildArgs,
139
+ });
140
+ return {
141
+ hash,
142
+ dockerfilePath,
143
+ // an inline definition carries no directory of its own — the
144
+ // repository root is the sensible default context
145
+ contextDir: (_a = imageConfig.context) !== null && _a !== void 0 ? _a : ".",
146
+ watchedPaths: [
147
+ `${exports.PROJECT_IMAGES_FOLDER}/${name}/**/*`,
148
+ ...watchedPaths,
149
+ CONFIG_FILE,
150
+ ],
151
+ files: [{ path: dockerfilePath, content }],
152
+ };
153
+ }
154
+ const dir = imageConfig.dir;
155
+ // fail at generation time with the offending image named: an
156
+ // unreadable dir would otherwise surface as a bare fs ENOENT, and a
157
+ // missing Dockerfile only as a docker build failure in CI
158
+ if (!(0, fs_1.existsSync)(dir)) {
159
+ throw new Error(`job image "${name}": the directory "${dir}" does not exist (config.images.${name}.dir, relative to the repository root)`);
160
+ }
161
+ if (!(0, fs_1.existsSync)((0, path_1.join)(dir, "Dockerfile"))) {
162
+ throw new Error(`job image "${name}": no Dockerfile in "${dir}" (config.images.${name}.dir)`);
163
+ }
164
+ const { hash, watchedPaths } = (0, hash_1.computeCustomImageHash)({
165
+ dir,
166
+ hashExtraPaths: imageConfig.hashExtraPaths,
167
+ buildArgs: imageConfig.buildArgs,
168
+ });
169
+ return {
170
+ hash,
171
+ dockerfilePath: `${dir}/Dockerfile`,
172
+ contextDir: (_b = imageConfig.context) !== null && _b !== void 0 ? _b : dir,
173
+ // the dir is committed in the project — watched in place, nothing
174
+ // is materialized. The config file is watched too: buildArgs /
175
+ // hashExtraPaths changes alter the tag without touching the dir
176
+ watchedPaths: [...watchedPaths, CONFIG_FILE],
177
+ files: [],
178
+ };
179
+ }
66
180
  use(name) {
67
181
  var _a;
68
182
  const existing = this.used.get(name);
@@ -77,27 +191,43 @@ class JobImagesPlan {
77
191
  dir: (0, shippedImages_1.getShippedImageDir)(name),
78
192
  extraDirs: dependencies.map((dependency) => (0, shippedImages_1.getShippedImageDir)(dependency)),
79
193
  });
80
- const entry = { hash };
81
- this.used.set(name, entry);
82
- return entry;
194
+ const targetDir = `${exports.GENERATED_IMAGES_FOLDER}/${name}`;
195
+ const planned = {
196
+ hash,
197
+ jobName: ensureJobName(name),
198
+ imageRef: `${this.registryImageRef()}/catladder/${name}:${hash}`,
199
+ dockerfilePath: `${targetDir}/Dockerfile`,
200
+ // the jobs family INCLUDEs sibling images, so it builds from the
201
+ // images root; the others from their own dir
202
+ contextDir: shippedImages_1.RUNNER_IMAGE_BUILD_CONTEXT[name] === "root"
203
+ ? exports.GENERATED_IMAGES_FOLDER
204
+ : targetDir,
205
+ watchedPaths: [name, ...dependencies].map((dir) => `${exports.GENERATED_IMAGES_FOLDER}/${dir}/**/*`),
206
+ // pipelines build from committed, reviewable files (and gitlab's
207
+ // rules:changes can watch them)
208
+ files: materializeDir((0, shippedImages_1.getShippedImageDir)(name), targetDir),
209
+ };
210
+ this.used.set(name, planned);
211
+ return planned;
83
212
  }
84
213
  /**
85
214
  * the image build jobs for all used images
86
215
  */
87
216
  getEnsureJobs() {
88
- return [...this.used.entries()].map(([name, { hash }]) => this.createEnsureJob(name, hash));
217
+ return [...this.used.values(), ...this.usedProject.values()].map((planned) => this.createImageBuildJob(planned));
89
218
  }
90
- createEnsureJob(name, hash) {
91
- var _a;
219
+ createImageBuildJob({ jobName, imageRef, watchedPaths, dockerfilePath, contextDir, buildArgs, }) {
220
+ const buildArgFlags = Object.entries(buildArgs !== null && buildArgs !== void 0 ? buildArgs : {})
221
+ .map(([key, value]) => ` --build-arg '${key}=${value}'`)
222
+ .join("");
223
+ const buildCommand = `DOCKER_BUILDKIT=1 docker build -t ${imageRef}${buildArgFlags} -f ${dockerfilePath} ${contextDir}`;
92
224
  const ctx = { pipelineType: this.pipelineType };
93
225
  const registryUser = (0, ciVariables_1.getCiVariable)(ctx, "registryUser");
94
226
  const jobToken = (0, ciVariables_1.getCiVariable)(ctx, "jobToken");
95
227
  const registry = (0, ciVariables_1.getCiVariable)(ctx, "registry");
96
- const imageRef = `${this.registryImageRef()}/catladder/${name}:${hash}`;
97
- const watchedDirs = [name, ...((_a = shippedImages_1.RUNNER_IMAGE_DEPENDENCIES[name]) !== null && _a !== void 0 ? _a : [])];
98
228
  const { services, runnerVariables } = (0, docker_1.getDockerJobBaseProps)();
99
229
  return {
100
- name: ensureJobName(name),
230
+ name: jobName,
101
231
  stage: "setup",
102
232
  image: BUILDER_IMAGE,
103
233
  services,
@@ -107,7 +237,9 @@ class JobImagesPlan {
107
237
  // no equivalent and always runs (the existence check is fast)
108
238
  rules: [
109
239
  {
110
- changes: watchedDirs.map((dir) => `${exports.GENERATED_IMAGES_FOLDER}/${dir}/**/*`),
240
+ // a fresh array per job: the yaml serializer anchors repeated
241
+ // objects, and a shared reference would reshuffle anchors
242
+ changes: [...watchedPaths],
111
243
  },
112
244
  ],
113
245
  variables: {},
@@ -121,31 +253,33 @@ class JobImagesPlan {
121
253
  ` exit 0`,
122
254
  `fi`,
123
255
  ]),
124
- ...(0, gitlab_1.collapseableSection)("docker-build", "Building image")([
125
- `DOCKER_BUILDKIT=1 docker build -t ${imageRef} -f ${exports.GENERATED_IMAGES_FOLDER}/${name}/Dockerfile ${shippedImages_1.RUNNER_IMAGE_BUILD_CONTEXT[name] === "root"
126
- ? exports.GENERATED_IMAGES_FOLDER
127
- : `${exports.GENERATED_IMAGES_FOLDER}/${name}`}`,
128
- ]),
256
+ ...(0, gitlab_1.collapseableSection)("docker-build", "Building image")([buildCommand]),
129
257
  ...(0, gitlab_1.collapseableSection)("docker-push", "Pushing image")([`docker push ${imageRef}`]),
130
258
  ],
131
259
  };
132
260
  }
133
261
  /**
134
- * the image definitions of all used images, materialized into the
135
- * generated files (so pipelines build from committed, reviewable
136
- * files and gitlab's rules:changes can watch them)
262
+ * the image definitions to materialize into the generated files (so
263
+ * pipelines build from committed, reviewable files and gitlab's
264
+ * rules:changes can watch them): the definitions catladder ships and
265
+ * the project's inline Dockerfiles. A project image directory is
266
+ * already committed and contributes nothing.
137
267
  */
138
268
  getGeneratedFiles() {
139
- return [...this.used.keys()].flatMap((name) => {
140
- const dir = (0, shippedImages_1.getShippedImageDir)(name);
141
- return listFilesRecursive(dir).map((file) => ({
142
- path: (0, path_1.join)(exports.GENERATED_IMAGES_FOLDER, name, file),
143
- content: (0, fs_1.readFileSync)((0, path_1.join)(dir, file), "utf-8"),
144
- }));
145
- });
269
+ return [...this.used.values(), ...this.usedProject.values()].flatMap(({ files }) => files);
146
270
  }
147
271
  }
148
272
  exports.JobImagesPlan = JobImagesPlan;
273
+ /**
274
+ * an inline Dockerfile is written as given — as one string, or as lines
275
+ * joined with newlines (always newline-terminated)
276
+ */
277
+ const toDockerfileContent = (dockerfile) => {
278
+ const content = Array.isArray(dockerfile)
279
+ ? dockerfile.join("\n")
280
+ : dockerfile;
281
+ return content.endsWith("\n") ? content : `${content}\n`;
282
+ };
149
283
  const IGNORED_FILES = new Set([".DS_Store", "Thumbs.db"]);
150
284
  const listFilesRecursive = (dir) => (0, fs_1.readdirSync)(dir, { recursive: true, encoding: "utf-8" })
151
285
  .filter((entry) => {
@@ -1 +1 @@
1
- {"version":3,"file":"jobImagesPlan.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/customImages/jobImagesPlan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobImagesPlan.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/customImages/jobImagesPlan.ts"],"names":[],"mappings":"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"}