@catladder/cli 5.3.1 → 5.4.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 (25) hide show
  1. package/dist/bundles/catenv/index.js +79 -4
  2. package/dist/bundles/cli/index.js +79 -4
  3. package/dist/bundles/skills/catladder-builds/SKILL.md +4 -0
  4. package/dist/bundles/skills/catladder-builds/references/build-types.md +1 -0
  5. package/dist/packages/pipeline/src/backends/types.d.ts +6 -2
  6. package/dist/packages/pipeline/src/build/docker.d.ts +6 -0
  7. package/dist/packages/pipeline/src/build/docker.js +49 -2
  8. package/dist/packages/pipeline/src/build/docker.js.map +1 -1
  9. package/dist/packages/pipeline/src/build/types.d.ts +29 -0
  10. package/dist/packages/pipeline/src/build/types.js.map +1 -1
  11. package/dist/packages/pipeline/src/customImages/hash.d.ts +4 -0
  12. package/dist/packages/pipeline/src/customImages/hash.js +3 -0
  13. package/dist/packages/pipeline/src/customImages/hash.js.map +1 -1
  14. package/dist/packages/pipeline/src/customImages/jobImagesPlan.d.ts +2 -1
  15. package/dist/packages/pipeline/src/customImages/jobImagesPlan.js +21 -1
  16. package/dist/packages/pipeline/src/customImages/jobImagesPlan.js.map +1 -1
  17. package/dist/packages/pipeline/src/pipeline/generatePipelineFiles.js +1 -1
  18. package/dist/packages/pipeline/src/pipeline/generatePipelineFiles.js.map +1 -1
  19. package/dist/packages/pipeline/src/utils/writeFiles.d.ts +2 -1
  20. package/dist/packages/pipeline/src/utils/writeFiles.js +5 -0
  21. package/dist/packages/pipeline/src/utils/writeFiles.js.map +1 -1
  22. package/dist/skills/catladder-builds/SKILL.md +4 -0
  23. package/dist/skills/catladder-builds/references/build-types.md +1 -0
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +1 -1
@@ -6082,7 +6082,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6082
6082
  return (mod && mod.__esModule) ? mod : { "default": mod };
6083
6083
  };
6084
6084
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6085
- exports.hasDockerfile = exports.getDockerBuildDefaultScript = exports.getDockerBuildScriptWithBuiltInDockerFile = exports.gitlabDockerLogin = exports.DockerBuildJob = exports.getDockerJobBaseProps = exports.DOCKER_BUILD_JOB_NAME = exports.getDockerBuildVariables = exports.requiresDockerBuild = exports.getDockerImageVariables = void 0;
6085
+ exports.hasDockerfile = exports.getDockerBuildDefaultScript = exports.getDockerBuildScriptWithBuiltInDockerFile = exports.gitlabDockerLogin = exports.DockerBuildJob = exports.getDockerJobBaseProps = exports.DOCKER_BUILD_JOB_NAME = exports.getDockerBuildVariables = exports.requiresDockerBuild = exports.getReuseMainBranchImageScript = exports.getDockerImageVariables = void 0;
6086
6086
  const fs_1 = __nccwpck_require__(79896);
6087
6087
  const lodash_es_1 = __nccwpck_require__(50210);
6088
6088
  const path_1 = __importDefault(__nccwpck_require__(16928));
@@ -6090,6 +6090,7 @@ const deploy_1 = __nccwpck_require__(3659);
6090
6090
  const artifactsRegistry_1 = __nccwpck_require__(44330);
6091
6091
  const gcloudServiceAccountLoginCommands_1 = __nccwpck_require__(54799);
6092
6092
  const ciVariables_1 = __nccwpck_require__(91215);
6093
+ const configruedEnvs_1 = __nccwpck_require__(38866);
6093
6094
  const runner_1 = __nccwpck_require__(92146);
6094
6095
  const jobs_1 = __nccwpck_require__(98521);
6095
6096
  const gitlab_1 = __nccwpck_require__(86962);
@@ -6121,6 +6122,52 @@ const getDockerImageVariables = (context) => {
6121
6122
  };
6122
6123
  };
6123
6124
  exports.getDockerImageVariables = getDockerImageVariables;
6125
+ const shellQuote = (value) => `'${value.replace(/'/g, `'\\''`)}'`;
6126
+ /**
6127
+ * script that copies the main branch image instead of building it, see
6128
+ * `build.reuseMainBranchImage`. Exits the job when it
6129
+ * reused an image, so the build script after it only runs as fallback.
6130
+ */
6131
+ const getReuseMainBranchImageScript = (context) => {
6132
+ var _a, _b;
6133
+ const buildConfig = context.build.config;
6134
+ // only standalone builds have the option, workspace builds don't
6135
+ const option = "reuseMainBranchImage" in buildConfig
6136
+ ? buildConfig.reuseMainBranchImage
6137
+ : undefined;
6138
+ const { fullConfig, name, env } = context;
6139
+ if (!option ||
6140
+ !(0, configruedEnvs_1.getAllEnvsByTrigger)(fullConfig, name, "taggedRelease").includes(env)) {
6141
+ return [];
6142
+ }
6143
+ if ((0, deploy_1.isOfDeployType)((_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config, "google-cloudrun")) {
6144
+ throw new Error(`${name}: build.reuseMainBranchImage is not supported for google-cloudrun deploys`);
6145
+ }
6146
+ const [mainBranchEnv] = (0, configruedEnvs_1.getAllEnvsByTrigger)(fullConfig, name, "mainBranch");
6147
+ if (!mainBranchEnv) {
6148
+ throw new Error(`${name}: build.reuseMainBranchImage needs an env that builds on the main branch (e.g. dev)`);
6149
+ }
6150
+ const releaseFiles = (_b = (option === true ? undefined : option.releaseFiles)) !== null && _b !== void 0 ? _b : [
6151
+ "CHANGELOG.md",
6152
+ ];
6153
+ const sha = (0, ciVariables_1.getCiVariable)(context, "commitSha");
6154
+ return [
6155
+ ...(0, exports.gitlabDockerLogin)(context),
6156
+ `REUSE_IMAGE="${(0, ciVariables_1.getCiVariable)(context, "registryImage")}/${mainBranchEnv}/${name}"`,
6157
+ `reuse_sha=""
6158
+ if docker buildx imagetools inspect "$REUSE_IMAGE:${sha}" >/dev/null 2>&1; then
6159
+ reuse_sha="${sha}"
6160
+ elif git fetch --quiet --depth=2 origin "${sha}" && [ -z "$(git diff --name-only "${sha}^" "${sha}" | grep -vxF ${releaseFiles.map((f) => `-e ${shellQuote(f)}`).join(" ")})" ]; then
6161
+ reuse_sha="$(git rev-parse "${sha}^")"
6162
+ fi
6163
+ if [ -n "$reuse_sha" ] && docker buildx imagetools create --prefer-index=false --tag "$DOCKER_IMAGE:$DOCKER_IMAGE_TAG" "$REUSE_IMAGE:$reuse_sha"; then
6164
+ echo "♻️ reused $REUSE_IMAGE:$reuse_sha, skipping the build"
6165
+ exit 0
6166
+ fi
6167
+ echo "no main branch image to reuse, building the image"`,
6168
+ ];
6169
+ };
6170
+ exports.getReuseMainBranchImageScript = getReuseMainBranchImageScript;
6124
6171
  /**
6125
6172
  * Weather the context requires a docker build
6126
6173
  */
@@ -6192,7 +6239,7 @@ class DockerBuildJob extends jobs_1.CatladderJob {
6192
6239
  provides: ["dockerImage"],
6193
6240
  caches: cache,
6194
6241
  ...(0, exports.getDockerJobBaseProps)(),
6195
- script: script || [],
6242
+ script: [...(0, exports.getReuseMainBranchImageScript)(context), ...(script || [])],
6196
6243
  variables: {
6197
6244
  ...(0, removeUndefined_1.removeUndefined)((0, exports.getDockerBuildVariables)(context)),
6198
6245
  ...(0, removeUndefined_1.removeUndefined)(variables !== null && variables !== void 0 ? variables : {}),
@@ -8428,6 +8475,9 @@ function computeCustomImageHash(config) {
8428
8475
  watchedPaths.push(`${extraDir}/**/*`);
8429
8476
  }
8430
8477
  watchedPaths.push(...hashExtras(hash, config));
8478
+ if (config.salt) {
8479
+ hash.update(config.salt);
8480
+ }
8431
8481
  return {
8432
8482
  hash: hash.digest("hex").slice(0, 12),
8433
8483
  watchedPaths,
@@ -8497,8 +8547,27 @@ const toResolvedJobImage = ({ imageRef, jobName, }) => ({
8497
8547
  */
8498
8548
  const materializeDir = (sourceDir, targetDir) => listFilesRecursive(sourceDir).map((file) => ({
8499
8549
  path: (0, path_1.join)(targetDir, file),
8500
- content: (0, fs_1.readFileSync)((0, path_1.join)(sourceDir, file), "utf-8"),
8550
+ content: readVerbatim((0, path_1.join)(sourceDir, file)),
8501
8551
  }));
8552
+ /**
8553
+ * text files stay strings, anything that is not valid utf-8 (e.g. the
8554
+ * packaged helm chart dependencies of the kubernetes image) stays a
8555
+ * Buffer, so it is written byte for byte instead of being mangled into
8556
+ * replacement characters
8557
+ */
8558
+ const readVerbatim = (path) => {
8559
+ const bytes = (0, fs_1.readFileSync)(path);
8560
+ const text = bytes.toString("utf-8");
8561
+ return Buffer.from(text, "utf-8").equals(bytes) ? text : bytes;
8562
+ };
8563
+ /**
8564
+ * part of the tag of every shipped image. Bump it when the images built
8565
+ * from the materialized definitions change while the shipped definitions
8566
+ * don't, so repositories rebuild them instead of reusing the existing tag:
8567
+ * - 2: up to 5.3.1 binary files were materialized as utf-8 text, which
8568
+ * corrupted the helm chart dependencies of the kubernetes image
8569
+ */
8570
+ const SHIPPED_IMAGE_HASH_SALT = "2";
8502
8571
  // built-in (catladder-shipped) images carry the catladder marker in
8503
8572
  // their job name; project-declared images get the short plain name
8504
8573
  const ensureJobName = (name) => `🐳 catladder image ${name}`;
@@ -8661,6 +8730,7 @@ class JobImagesPlan {
8661
8730
  const { hash } = (0, hash_1.computeCustomImageHash)({
8662
8731
  dir: (0, shippedImages_1.getShippedImageDir)(name),
8663
8732
  extraDirs: dependencies.map((dependency) => (0, shippedImages_1.getShippedImageDir)(dependency)),
8733
+ salt: SHIPPED_IMAGE_HASH_SALT,
8664
8734
  });
8665
8735
  const targetDir = `${exports.GENERATED_IMAGES_FOLDER}/${name}`;
8666
8736
  const planned = {
@@ -12552,7 +12622,7 @@ async function generatePipelineFilesForBackend(context, backend) {
12552
12622
  // write files
12553
12623
  await Promise.all(files.map(async ({ path, content }) => {
12554
12624
  await (0, promises_1.mkdir)((0, path_1.dirname)(path), { recursive: true });
12555
- if (typeof content === "string") {
12625
+ if (typeof content === "string" || Buffer.isBuffer(content)) {
12556
12626
  await context.fileWriter.writeGeneratedFileRaw(path, content);
12557
12627
  }
12558
12628
  else {
@@ -13581,6 +13651,11 @@ class FileWriter {
13581
13651
  * parser directives like `# syntax = ...`
13582
13652
  */
13583
13653
  async writeGeneratedFileRaw(path, content) {
13654
+ if (Buffer.isBuffer(content)) {
13655
+ // binary content is written as is, file hooks only transform text
13656
+ await (0, promises_1.writeFile)(path, content);
13657
+ return;
13658
+ }
13584
13659
  await this.writeTheFile(path, content);
13585
13660
  }
13586
13661
  async writeGeneratedFile(path, content, options) {
@@ -12659,7 +12659,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12659
12659
  return (mod && mod.__esModule) ? mod : { "default": mod };
12660
12660
  };
12661
12661
  Object.defineProperty(exports, "__esModule", ({ value: true }));
12662
- exports.hasDockerfile = exports.getDockerBuildDefaultScript = exports.getDockerBuildScriptWithBuiltInDockerFile = exports.gitlabDockerLogin = exports.DockerBuildJob = exports.getDockerJobBaseProps = exports.DOCKER_BUILD_JOB_NAME = exports.getDockerBuildVariables = exports.requiresDockerBuild = exports.getDockerImageVariables = void 0;
12662
+ exports.hasDockerfile = exports.getDockerBuildDefaultScript = exports.getDockerBuildScriptWithBuiltInDockerFile = exports.gitlabDockerLogin = exports.DockerBuildJob = exports.getDockerJobBaseProps = exports.DOCKER_BUILD_JOB_NAME = exports.getDockerBuildVariables = exports.requiresDockerBuild = exports.getReuseMainBranchImageScript = exports.getDockerImageVariables = void 0;
12663
12663
  const fs_1 = __nccwpck_require__(79896);
12664
12664
  const lodash_es_1 = __nccwpck_require__(50210);
12665
12665
  const path_1 = __importDefault(__nccwpck_require__(16928));
@@ -12667,6 +12667,7 @@ const deploy_1 = __nccwpck_require__(3659);
12667
12667
  const artifactsRegistry_1 = __nccwpck_require__(44330);
12668
12668
  const gcloudServiceAccountLoginCommands_1 = __nccwpck_require__(54799);
12669
12669
  const ciVariables_1 = __nccwpck_require__(91215);
12670
+ const configruedEnvs_1 = __nccwpck_require__(38866);
12670
12671
  const runner_1 = __nccwpck_require__(92146);
12671
12672
  const jobs_1 = __nccwpck_require__(98521);
12672
12673
  const gitlab_1 = __nccwpck_require__(86962);
@@ -12698,6 +12699,52 @@ const getDockerImageVariables = (context) => {
12698
12699
  };
12699
12700
  };
12700
12701
  exports.getDockerImageVariables = getDockerImageVariables;
12702
+ const shellQuote = (value) => `'${value.replace(/'/g, `'\\''`)}'`;
12703
+ /**
12704
+ * script that copies the main branch image instead of building it, see
12705
+ * `build.reuseMainBranchImage`. Exits the job when it
12706
+ * reused an image, so the build script after it only runs as fallback.
12707
+ */
12708
+ const getReuseMainBranchImageScript = (context) => {
12709
+ var _a, _b;
12710
+ const buildConfig = context.build.config;
12711
+ // only standalone builds have the option, workspace builds don't
12712
+ const option = "reuseMainBranchImage" in buildConfig
12713
+ ? buildConfig.reuseMainBranchImage
12714
+ : undefined;
12715
+ const { fullConfig, name, env } = context;
12716
+ if (!option ||
12717
+ !(0, configruedEnvs_1.getAllEnvsByTrigger)(fullConfig, name, "taggedRelease").includes(env)) {
12718
+ return [];
12719
+ }
12720
+ if ((0, deploy_1.isOfDeployType)((_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config, "google-cloudrun")) {
12721
+ throw new Error(`${name}: build.reuseMainBranchImage is not supported for google-cloudrun deploys`);
12722
+ }
12723
+ const [mainBranchEnv] = (0, configruedEnvs_1.getAllEnvsByTrigger)(fullConfig, name, "mainBranch");
12724
+ if (!mainBranchEnv) {
12725
+ throw new Error(`${name}: build.reuseMainBranchImage needs an env that builds on the main branch (e.g. dev)`);
12726
+ }
12727
+ const releaseFiles = (_b = (option === true ? undefined : option.releaseFiles)) !== null && _b !== void 0 ? _b : [
12728
+ "CHANGELOG.md",
12729
+ ];
12730
+ const sha = (0, ciVariables_1.getCiVariable)(context, "commitSha");
12731
+ return [
12732
+ ...(0, exports.gitlabDockerLogin)(context),
12733
+ `REUSE_IMAGE="${(0, ciVariables_1.getCiVariable)(context, "registryImage")}/${mainBranchEnv}/${name}"`,
12734
+ `reuse_sha=""
12735
+ if docker buildx imagetools inspect "$REUSE_IMAGE:${sha}" >/dev/null 2>&1; then
12736
+ reuse_sha="${sha}"
12737
+ elif git fetch --quiet --depth=2 origin "${sha}" && [ -z "$(git diff --name-only "${sha}^" "${sha}" | grep -vxF ${releaseFiles.map((f) => `-e ${shellQuote(f)}`).join(" ")})" ]; then
12738
+ reuse_sha="$(git rev-parse "${sha}^")"
12739
+ fi
12740
+ if [ -n "$reuse_sha" ] && docker buildx imagetools create --prefer-index=false --tag "$DOCKER_IMAGE:$DOCKER_IMAGE_TAG" "$REUSE_IMAGE:$reuse_sha"; then
12741
+ echo "♻️ reused $REUSE_IMAGE:$reuse_sha, skipping the build"
12742
+ exit 0
12743
+ fi
12744
+ echo "no main branch image to reuse, building the image"`,
12745
+ ];
12746
+ };
12747
+ exports.getReuseMainBranchImageScript = getReuseMainBranchImageScript;
12701
12748
  /**
12702
12749
  * Weather the context requires a docker build
12703
12750
  */
@@ -12769,7 +12816,7 @@ class DockerBuildJob extends jobs_1.CatladderJob {
12769
12816
  provides: ["dockerImage"],
12770
12817
  caches: cache,
12771
12818
  ...(0, exports.getDockerJobBaseProps)(),
12772
- script: script || [],
12819
+ script: [...(0, exports.getReuseMainBranchImageScript)(context), ...(script || [])],
12773
12820
  variables: {
12774
12821
  ...(0, removeUndefined_1.removeUndefined)((0, exports.getDockerBuildVariables)(context)),
12775
12822
  ...(0, removeUndefined_1.removeUndefined)(variables !== null && variables !== void 0 ? variables : {}),
@@ -15005,6 +15052,9 @@ function computeCustomImageHash(config) {
15005
15052
  watchedPaths.push(`${extraDir}/**/*`);
15006
15053
  }
15007
15054
  watchedPaths.push(...hashExtras(hash, config));
15055
+ if (config.salt) {
15056
+ hash.update(config.salt);
15057
+ }
15008
15058
  return {
15009
15059
  hash: hash.digest("hex").slice(0, 12),
15010
15060
  watchedPaths,
@@ -15074,8 +15124,27 @@ const toResolvedJobImage = ({ imageRef, jobName, }) => ({
15074
15124
  */
15075
15125
  const materializeDir = (sourceDir, targetDir) => listFilesRecursive(sourceDir).map((file) => ({
15076
15126
  path: (0, path_1.join)(targetDir, file),
15077
- content: (0, fs_1.readFileSync)((0, path_1.join)(sourceDir, file), "utf-8"),
15127
+ content: readVerbatim((0, path_1.join)(sourceDir, file)),
15078
15128
  }));
15129
+ /**
15130
+ * text files stay strings, anything that is not valid utf-8 (e.g. the
15131
+ * packaged helm chart dependencies of the kubernetes image) stays a
15132
+ * Buffer, so it is written byte for byte instead of being mangled into
15133
+ * replacement characters
15134
+ */
15135
+ const readVerbatim = (path) => {
15136
+ const bytes = (0, fs_1.readFileSync)(path);
15137
+ const text = bytes.toString("utf-8");
15138
+ return Buffer.from(text, "utf-8").equals(bytes) ? text : bytes;
15139
+ };
15140
+ /**
15141
+ * part of the tag of every shipped image. Bump it when the images built
15142
+ * from the materialized definitions change while the shipped definitions
15143
+ * don't, so repositories rebuild them instead of reusing the existing tag:
15144
+ * - 2: up to 5.3.1 binary files were materialized as utf-8 text, which
15145
+ * corrupted the helm chart dependencies of the kubernetes image
15146
+ */
15147
+ const SHIPPED_IMAGE_HASH_SALT = "2";
15079
15148
  // built-in (catladder-shipped) images carry the catladder marker in
15080
15149
  // their job name; project-declared images get the short plain name
15081
15150
  const ensureJobName = (name) => `🐳 catladder image ${name}`;
@@ -15238,6 +15307,7 @@ class JobImagesPlan {
15238
15307
  const { hash } = (0, hash_1.computeCustomImageHash)({
15239
15308
  dir: (0, shippedImages_1.getShippedImageDir)(name),
15240
15309
  extraDirs: dependencies.map((dependency) => (0, shippedImages_1.getShippedImageDir)(dependency)),
15310
+ salt: SHIPPED_IMAGE_HASH_SALT,
15241
15311
  });
15242
15312
  const targetDir = `${exports.GENERATED_IMAGES_FOLDER}/${name}`;
15243
15313
  const planned = {
@@ -19129,7 +19199,7 @@ async function generatePipelineFilesForBackend(context, backend) {
19129
19199
  // write files
19130
19200
  await Promise.all(files.map(async ({ path, content }) => {
19131
19201
  await (0, promises_1.mkdir)((0, path_1.dirname)(path), { recursive: true });
19132
- if (typeof content === "string") {
19202
+ if (typeof content === "string" || Buffer.isBuffer(content)) {
19133
19203
  await context.fileWriter.writeGeneratedFileRaw(path, content);
19134
19204
  }
19135
19205
  else {
@@ -20158,6 +20228,11 @@ class FileWriter {
20158
20228
  * parser directives like `# syntax = ...`
20159
20229
  */
20160
20230
  async writeGeneratedFileRaw(path, content) {
20231
+ if (Buffer.isBuffer(content)) {
20232
+ // binary content is written as is, file hooks only transform text
20233
+ await (0, promises_1.writeFile)(path, content);
20234
+ return;
20235
+ }
20161
20236
  await this.writeTheFile(path, content);
20162
20237
  }
20163
20238
  async writeGeneratedFile(path, content, options) {
@@ -74,6 +74,10 @@ type: `build: { from: "web" }` (see workspace builds below).
74
74
  runner tags, build-only env vars, and extra runner variables. A
75
75
  `jobImage` is a concrete image url or `{ image: "<name>" }`
76
76
  referencing a project image (see below).
77
+ - `reuseMainBranchImage` — in release pipelines, stage/prod copy the
78
+ image the main branch (`dev`) built for the released commit instead of
79
+ rebuilding it (falls back to a build). Only for images that don't
80
+ depend on the env, e.g. Rails via Cloud Native Buildpacks.
77
81
  - `docker` — the image build strategy: a built-in
78
82
  (`{ type: "nginx" | "node" | "meteor" }`) or
79
83
  `{ type: "custom" }` (expects a `Dockerfile`).
@@ -20,6 +20,7 @@ generated pipeline files.
20
20
  | `runnerVariables` | `Record<string,string>` | extra runner vars (also for `services:`) |
21
21
  | `jobTags` | `string[]` | runner tags |
22
22
  | `jobImage` | `JobImageConfig` | CI image for the build: a concrete image or `{ image: "<name>" }` referencing a project image |
23
+ | `reuseMainBranchImage` | `boolean \| { releaseFiles?: string[] }` | release envs (stage/prod) copy the main branch (`dev`) image of the released commit instead of rebuilding; falls back to a build. Only for env-independent images; not for `google-cloudrun`. `true` = `{ releaseFiles: ["CHANGELOG.md"] }` |
23
24
  | `docker` | see below | the deployable image strategy |
24
25
 
25
26
  `TestJobCustom` (for `lint`/`test`/`audit`): `command`, `jobImage`,
@@ -1,8 +1,12 @@
1
+ /// <reference types="node" />
1
2
  import type { Config, PipelineType } from "../types";
2
3
  export type PipelineFile = {
3
4
  path: string;
4
- /** yaml data, or a verbatim string (e.g. materialized dockerfiles) */
5
- content: Record<string, unknown> | string;
5
+ /**
6
+ * yaml data, or verbatim content (e.g. materialized dockerfiles, or
7
+ * binary files of a materialized image definition as Buffer)
8
+ */
9
+ content: Record<string, unknown> | string | Buffer;
6
10
  };
7
11
  /**
8
12
  * A pipeline backend renders catladder jobs into the files of a concrete
@@ -13,6 +13,12 @@ export declare const getDockerImageVariables: (context: ComponentContext) => {
13
13
  DOCKER_IMAGE_NAME: string;
14
14
  DOCKER_IMAGE: string;
15
15
  };
16
+ /**
17
+ * script that copies the main branch image instead of building it, see
18
+ * `build.reuseMainBranchImage`. Exits the job when it
19
+ * reused an image, so the build script after it only runs as fallback.
20
+ */
21
+ export declare const getReuseMainBranchImageScript: (context: ComponentContextWithBuild) => string[];
16
22
  /**
17
23
  * Weather the context requires a docker build
18
24
  */
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.hasDockerfile = exports.getDockerBuildDefaultScript = exports.getDockerBuildScriptWithBuiltInDockerFile = exports.gitlabDockerLogin = exports.DockerBuildJob = exports.getDockerJobBaseProps = exports.DOCKER_BUILD_JOB_NAME = exports.getDockerBuildVariables = exports.requiresDockerBuild = exports.getDockerImageVariables = void 0;
6
+ exports.hasDockerfile = exports.getDockerBuildDefaultScript = exports.getDockerBuildScriptWithBuiltInDockerFile = exports.gitlabDockerLogin = exports.DockerBuildJob = exports.getDockerJobBaseProps = exports.DOCKER_BUILD_JOB_NAME = exports.getDockerBuildVariables = exports.requiresDockerBuild = exports.getReuseMainBranchImageScript = exports.getDockerImageVariables = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const lodash_es_1 = require("lodash-es");
9
9
  const path_1 = __importDefault(require("path"));
@@ -11,6 +11,7 @@ const deploy_1 = require("../deploy");
11
11
  const artifactsRegistry_1 = require("../deploy/cloudRun/artifactsRegistry");
12
12
  const gcloudServiceAccountLoginCommands_1 = require("../deploy/cloudRun/utils/gcloudServiceAccountLoginCommands");
13
13
  const ciVariables_1 = require("../bash/ciVariables");
14
+ const configruedEnvs_1 = require("../config/configruedEnvs");
14
15
  const runner_1 = require("../runner");
15
16
  const jobs_1 = require("../types/jobs");
16
17
  const gitlab_1 = require("../utils/gitlab");
@@ -42,6 +43,52 @@ const getDockerImageVariables = (context) => {
42
43
  };
43
44
  };
44
45
  exports.getDockerImageVariables = getDockerImageVariables;
46
+ const shellQuote = (value) => `'${value.replace(/'/g, `'\\''`)}'`;
47
+ /**
48
+ * script that copies the main branch image instead of building it, see
49
+ * `build.reuseMainBranchImage`. Exits the job when it
50
+ * reused an image, so the build script after it only runs as fallback.
51
+ */
52
+ const getReuseMainBranchImageScript = (context) => {
53
+ var _a, _b;
54
+ const buildConfig = context.build.config;
55
+ // only standalone builds have the option, workspace builds don't
56
+ const option = "reuseMainBranchImage" in buildConfig
57
+ ? buildConfig.reuseMainBranchImage
58
+ : undefined;
59
+ const { fullConfig, name, env } = context;
60
+ if (!option ||
61
+ !(0, configruedEnvs_1.getAllEnvsByTrigger)(fullConfig, name, "taggedRelease").includes(env)) {
62
+ return [];
63
+ }
64
+ if ((0, deploy_1.isOfDeployType)((_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config, "google-cloudrun")) {
65
+ throw new Error(`${name}: build.reuseMainBranchImage is not supported for google-cloudrun deploys`);
66
+ }
67
+ const [mainBranchEnv] = (0, configruedEnvs_1.getAllEnvsByTrigger)(fullConfig, name, "mainBranch");
68
+ if (!mainBranchEnv) {
69
+ throw new Error(`${name}: build.reuseMainBranchImage needs an env that builds on the main branch (e.g. dev)`);
70
+ }
71
+ const releaseFiles = (_b = (option === true ? undefined : option.releaseFiles)) !== null && _b !== void 0 ? _b : [
72
+ "CHANGELOG.md",
73
+ ];
74
+ const sha = (0, ciVariables_1.getCiVariable)(context, "commitSha");
75
+ return [
76
+ ...(0, exports.gitlabDockerLogin)(context),
77
+ `REUSE_IMAGE="${(0, ciVariables_1.getCiVariable)(context, "registryImage")}/${mainBranchEnv}/${name}"`,
78
+ `reuse_sha=""
79
+ if docker buildx imagetools inspect "$REUSE_IMAGE:${sha}" >/dev/null 2>&1; then
80
+ reuse_sha="${sha}"
81
+ elif git fetch --quiet --depth=2 origin "${sha}" && [ -z "$(git diff --name-only "${sha}^" "${sha}" | grep -vxF ${releaseFiles.map((f) => `-e ${shellQuote(f)}`).join(" ")})" ]; then
82
+ reuse_sha="$(git rev-parse "${sha}^")"
83
+ fi
84
+ if [ -n "$reuse_sha" ] && docker buildx imagetools create --prefer-index=false --tag "$DOCKER_IMAGE:$DOCKER_IMAGE_TAG" "$REUSE_IMAGE:$reuse_sha"; then
85
+ echo "♻️ reused $REUSE_IMAGE:$reuse_sha, skipping the build"
86
+ exit 0
87
+ fi
88
+ echo "no main branch image to reuse, building the image"`,
89
+ ];
90
+ };
91
+ exports.getReuseMainBranchImageScript = getReuseMainBranchImageScript;
45
92
  /**
46
93
  * Weather the context requires a docker build
47
94
  */
@@ -113,7 +160,7 @@ class DockerBuildJob extends jobs_1.CatladderJob {
113
160
  provides: ["dockerImage"],
114
161
  caches: cache,
115
162
  ...(0, exports.getDockerJobBaseProps)(),
116
- script: script || [],
163
+ script: [...(0, exports.getReuseMainBranchImageScript)(context), ...(script || [])],
117
164
  variables: {
118
165
  ...(0, removeUndefined_1.removeUndefined)((0, exports.getDockerBuildVariables)(context)),
119
166
  ...(0, removeUndefined_1.removeUndefined)(variables !== null && variables !== void 0 ? variables : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/build/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/build/docker.ts"],"names":[],"mappings":"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"}
@@ -178,6 +178,35 @@ export type BuildConfigBase = {
178
178
  * custom image to use
179
179
  */
180
180
  jobImage?: JobImageConfig;
181
+ /**
182
+ * reuse the docker image that the main branch pipeline already built,
183
+ * instead of building it again in tagged-release pipelines (stage / prod).
184
+ *
185
+ * The 🔨 docker job of a release env copies the image of the main branch
186
+ * env (e.g. `dev/<component>:<sha>`) to its own image name — a registry-side
187
+ * copy that keeps the digest, no rebuild. It reuses the image of
188
+ *
189
+ * - the tagged commit itself, or
190
+ * - its parent, when the tagged commit is a release commit that only
191
+ * touches `releaseFiles` (e.g. the `CHANGELOG.md` commit of semantic-release)
192
+ *
193
+ * and falls back to a regular build when there is no such image.
194
+ *
195
+ * Only enable this when the image does not depend on the env (no
196
+ * env-specific build vars or build args baked in): stage and prod then run
197
+ * exactly the image that was built and deployed on the main branch.
198
+ *
199
+ * `true` is short for `{ releaseFiles: ["CHANGELOG.md"] }`.
200
+ * Not supported for `google-cloudrun` deploys.
201
+ */
202
+ reuseMainBranchImage?: boolean | {
203
+ /**
204
+ * files (relative to the repository root) a release commit may
205
+ * change without invalidating the image of its parent.
206
+ * Defaults to `["CHANGELOG.md"]`.
207
+ */
208
+ releaseFiles?: string[];
209
+ };
181
210
  } & WithCacheConfig;
182
211
  export type BuildConfigNodeBase = BuildConfigBase & {
183
212
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/build/types.ts"],"names":[],"mappings":";;;AA+aO,MAAM,uBAAuB,GAAG,CACrC,CAAsB,EACM,EAAE;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AALW,QAAA,uBAAuB,2BAKlC;AAEK,MAAM,aAAa,GAAG,CAC3B,CAAc,EACd,GAAG,KAAQ,EACqC,EAAE;IAClD,IAAI,CAAC,IAAA,+BAAuB,EAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/pipeline/src/build/types.ts"],"names":[],"mappings":";;;AA+cO,MAAM,uBAAuB,GAAG,CACrC,CAAsB,EACM,EAAE;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AALW,QAAA,uBAAuB,2BAKlC;AAEK,MAAM,aAAa,GAAG,CAC3B,CAAc,EACd,GAAG,KAAQ,EACqC,EAAE;IAClD,IAAI,CAAC,IAAA,+BAAuB,EAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB"}
@@ -7,6 +7,10 @@ export type ImageHashConfig = {
7
7
  extraDirs?: string[];
8
8
  hashExtraPaths?: string[];
9
9
  buildArgs?: Record<string, string>;
10
+ /**
11
+ * bumped to change the hash although no hashed file changed
12
+ */
13
+ salt?: string;
10
14
  };
11
15
  export type CustomImageHashResult = {
12
16
  hash: string;
@@ -65,6 +65,9 @@ function computeCustomImageHash(config) {
65
65
  watchedPaths.push(`${extraDir}/**/*`);
66
66
  }
67
67
  watchedPaths.push(...hashExtras(hash, config));
68
+ if (config.salt) {
69
+ hash.update(config.salt);
70
+ }
68
71
  return {
69
72
  hash: hash.digest("hex").slice(0, 12),
70
73
  watchedPaths,
@@ -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,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import type { CatladderImageRef } from "../runner";
2
3
  import type { GitlabJobImage, PipelineType } from "../types";
3
4
  import type { CatladderJob, CatladderJobNeed } from "../types/jobs";
@@ -13,7 +14,7 @@ export type ResolvedJobImage = {
13
14
  };
14
15
  export type GeneratedImageFile = {
15
16
  path: string;
16
- content: string;
17
+ content: string | Buffer;
17
18
  };
18
19
  /**
19
20
  * where inline project Dockerfiles are materialized — a subfolder, so a
@@ -37,8 +37,27 @@ const toResolvedJobImage = ({ imageRef, jobName, }) => ({
37
37
  */
38
38
  const materializeDir = (sourceDir, targetDir) => listFilesRecursive(sourceDir).map((file) => ({
39
39
  path: (0, path_1.join)(targetDir, file),
40
- content: (0, fs_1.readFileSync)((0, path_1.join)(sourceDir, file), "utf-8"),
40
+ content: readVerbatim((0, path_1.join)(sourceDir, file)),
41
41
  }));
42
+ /**
43
+ * text files stay strings, anything that is not valid utf-8 (e.g. the
44
+ * packaged helm chart dependencies of the kubernetes image) stays a
45
+ * Buffer, so it is written byte for byte instead of being mangled into
46
+ * replacement characters
47
+ */
48
+ const readVerbatim = (path) => {
49
+ const bytes = (0, fs_1.readFileSync)(path);
50
+ const text = bytes.toString("utf-8");
51
+ return Buffer.from(text, "utf-8").equals(bytes) ? text : bytes;
52
+ };
53
+ /**
54
+ * part of the tag of every shipped image. Bump it when the images built
55
+ * from the materialized definitions change while the shipped definitions
56
+ * don't, so repositories rebuild them instead of reusing the existing tag:
57
+ * - 2: up to 5.3.1 binary files were materialized as utf-8 text, which
58
+ * corrupted the helm chart dependencies of the kubernetes image
59
+ */
60
+ const SHIPPED_IMAGE_HASH_SALT = "2";
42
61
  // built-in (catladder-shipped) images carry the catladder marker in
43
62
  // their job name; project-declared images get the short plain name
44
63
  const ensureJobName = (name) => `🐳 catladder image ${name}`;
@@ -201,6 +220,7 @@ class JobImagesPlan {
201
220
  const { hash } = (0, hash_1.computeCustomImageHash)({
202
221
  dir: (0, shippedImages_1.getShippedImageDir)(name),
203
222
  extraDirs: dependencies.map((dependency) => (0, shippedImages_1.getShippedImageDir)(dependency)),
223
+ salt: SHIPPED_IMAGE_HASH_SALT,
204
224
  });
205
225
  const targetDir = `${exports.GENERATED_IMAGES_FOLDER}/${name}`;
206
226
  const planned = {
@@ -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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"}