@catladder/cli 5.1.2 → 5.2.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 (46) hide show
  1. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkGithubReleaseWorkflow.d.ts +30 -0
  2. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkGithubReleaseWorkflow.js +89 -0
  3. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkGithubReleaseWorkflow.js.map +1 -0
  4. package/dist/apps/cli/src/apps/cli/commands/project/doctor/index.js +2 -0
  5. package/dist/apps/cli/src/apps/cli/commands/project/doctor/index.js.map +1 -1
  6. package/dist/apps/cli/src/apps/cli/commands/project/githubMergeGating.d.ts +4 -1
  7. package/dist/apps/cli/src/apps/cli/commands/project/githubMergeGating.js +4 -1
  8. package/dist/apps/cli/src/apps/cli/commands/project/githubMergeGating.js.map +1 -1
  9. package/dist/apps/cli/src/catci.js +13 -0
  10. package/dist/apps/cli/src/catci.js.map +1 -1
  11. package/dist/apps/cli/src/release/changesetsReleaseJob.js +20 -42
  12. package/dist/apps/cli/src/release/changesetsReleaseJob.js.map +1 -1
  13. package/dist/apps/cli/src/release/githubDeployKey.d.ts +36 -0
  14. package/dist/apps/cli/src/release/githubDeployKey.js +126 -0
  15. package/dist/apps/cli/src/release/githubDeployKey.js.map +1 -0
  16. package/dist/bundles/catci/index.js +5 -5
  17. package/dist/bundles/catenv/index.js +41 -3
  18. package/dist/bundles/cli/index.js +143 -4
  19. package/dist/bundles/runner-images/semantic-release/Dockerfile +3 -1
  20. package/dist/bundles/runner-images/semantic-release/scripts/semanticRelease +37 -4
  21. package/dist/bundles/skills/catladder-migrate-ci-backend/SKILL.md +15 -6
  22. package/dist/bundles/skills/catladder-pipelines/SKILL.md +32 -0
  23. package/dist/bundles/skills/catladder-releases/SKILL.md +14 -0
  24. package/dist/packages/pipeline/src/backends/github/GithubBackend.js +12 -3
  25. package/dist/packages/pipeline/src/backends/github/GithubBackend.js.map +1 -1
  26. package/dist/packages/pipeline/src/backends/gitlab/createGitlabPipeline.js +16 -0
  27. package/dist/packages/pipeline/src/backends/gitlab/createGitlabPipeline.js.map +1 -1
  28. package/dist/packages/pipeline/src/backends/gitlab/gitlabReleaseJobs.d.ts +17 -0
  29. package/dist/packages/pipeline/src/backends/gitlab/gitlabReleaseJobs.js +13 -0
  30. package/dist/packages/pipeline/src/backends/gitlab/gitlabReleaseJobs.js.map +1 -1
  31. package/dist/packages/pipeline/src/types/gitlab-types.d.ts +29 -1
  32. package/dist/runner-images/semantic-release/Dockerfile +3 -1
  33. package/dist/runner-images/semantic-release/scripts/semanticRelease +37 -4
  34. package/dist/skills/catladder-migrate-ci-backend/SKILL.md +15 -6
  35. package/dist/skills/catladder-pipelines/SKILL.md +32 -0
  36. package/dist/skills/catladder-releases/SKILL.md +14 -0
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +1 -1
  39. package/src/apps/cli/commands/project/__tests__/checkGithubReleaseWorkflow.test.ts +89 -0
  40. package/src/apps/cli/commands/project/doctor/checkGithubReleaseWorkflow.ts +125 -0
  41. package/src/apps/cli/commands/project/doctor/index.ts +2 -0
  42. package/src/apps/cli/commands/project/githubMergeGating.ts +4 -1
  43. package/src/catci.ts +15 -0
  44. package/src/release/__tests__/githubDeployKey.test.ts +148 -0
  45. package/src/release/changesetsReleaseJob.ts +28 -57
  46. package/src/release/githubDeployKey.ts +141 -0
@@ -2678,10 +2678,19 @@ const TRIGGER_WORKFLOWS = {
2678
2678
  },
2679
2679
  taggedRelease: {
2680
2680
  name: "🛠️ catladder release",
2681
- // tags pushed with the default GITHUB_TOKEN (as the release job
2682
- // does) don't trigger `on: push: tags` the release job therefore
2683
- // also dispatches this workflow explicitly for the new tag
2681
+ // tags pushed with the default GITHUB_TOKEN don't trigger `on:
2682
+ // push: tags`, and the release job's deploy-key push carries
2683
+ // [skip ci] the release job therefore dispatches this workflow
2684
+ // explicitly for the new tag (the only run for it)
2684
2685
  on: { push: { tags: ["v*"] }, workflow_dispatch: {} },
2686
+ // one run per tag at a time, never cancelled: should a second run
2687
+ // for the same tag ever start (a redispatch, or a project whose
2688
+ // own .releaserc drops the [skip ci] marker), it waits instead of
2689
+ // deploying on top of the first
2690
+ concurrency: {
2691
+ group: "catladder-release-${{ github.ref_name }}",
2692
+ "cancel-in-progress": false,
2693
+ },
2685
2694
  },
2686
2695
  };
2687
2696
  class GithubBackend {
@@ -4794,9 +4803,20 @@ const createGitlabPipelineWithDefaults = ({ image, variables, before_script, aut
4794
4803
  ],
4795
4804
  workflow: {
4796
4805
  name: "$PIPELINE_ICON $PIPELINE_NAME",
4806
+ // superseded pipelines must actually die: "interruptible" cancels
4807
+ // every interruptible job, while gitlab's default "conservative"
4808
+ // lets one started `interruptible: false` job shield the whole
4809
+ // pipeline from cancellation. The rules below opt the pipelines
4810
+ // that must run to completion back out.
4811
+ // NOTE: this only tunes the project setting "Auto-cancel
4812
+ // redundant pipelines" — with that setting off nothing cancels.
4813
+ auto_cancel: { on_new_commit: "interruptible" },
4797
4814
  rules: [
4798
4815
  {
4799
4816
  if: '$CI_PIPELINE_SOURCE == "trigger"',
4817
+ // an agent run is not redundant work: a commit landing while
4818
+ // it thinks must not kill it
4819
+ auto_cancel: { on_new_commit: "none" },
4800
4820
  variables: {
4801
4821
  PIPELINE_ICON: "🤖",
4802
4822
  PIPELINE_NAME: "Thinking...",
@@ -4825,6 +4845,11 @@ const createGitlabPipelineWithDefaults = ({ image, variables, before_script, aut
4825
4845
  },
4826
4846
  {
4827
4847
  if: rules_1.RULE_IS_TAGGED_RELEASE.if,
4848
+ // a release pipeline always runs through: tags are immutable,
4849
+ // so this only bites when someone force-moves one — and a
4850
+ // release cancelled halfway leaves the version published in
4851
+ // some places and missing in others
4852
+ auto_cancel: { on_new_commit: "none" },
4828
4853
  variables: {
4829
4854
  PIPELINE_ICON: "🐱📦",
4830
4855
  PIPELINE_NAME: "Release $CI_COMMIT_TAG",
@@ -4941,6 +4966,12 @@ mainBranchJobNames) => {
4941
4966
  image: releaseImage,
4942
4967
  script: [method.script],
4943
4968
  after_script: [EXPIRED_TOKEN_HELP],
4969
+ // a release in flight must never be killed by a new commit — a
4970
+ // half-published version (tag pushed, npm publish missing) is not
4971
+ // recoverable by re-running. Under gitlab's default "conservative"
4972
+ // auto-cancel this also shields the rest of the pipeline, but only
4973
+ // once the release actually started, which is late by construction.
4974
+ interruptible: false,
4944
4975
  };
4945
4976
  const forceReleaseJob = {
4946
4977
  ["⚠️ force create release"]: {
@@ -4964,6 +4995,10 @@ mainBranchJobNames) => {
4964
4995
  stage: "test",
4965
4996
  image: releaseImage,
4966
4997
  script: [method.checkScript],
4998
+ // a redundant report is worthless: without this the job
4999
+ // defaults to interruptible: false and, once started, stops
5000
+ // gitlab from auto-cancelling the superseded MR pipeline
5001
+ interruptible: true,
4967
5002
  allow_failure: true,
4968
5003
  artifacts: {
4969
5004
  paths: ["changeset-report.md"],
@@ -5033,6 +5068,9 @@ mainBranchJobNames) => {
5033
5068
  script: [
5034
5069
  `echo "release queued — '${exports.RELEASE_EXECUTOR_JOB_NAME}' runs it as soon as every other job in this pipeline succeeded"`,
5035
5070
  ],
5071
+ // the recorded intent must survive a new commit: cancelling it
5072
+ // would silently drop the queued release
5073
+ interruptible: false,
5036
5074
  needs: [],
5037
5075
  // allow_failure keeps the unclicked button from blocking the
5038
5076
  // pipeline AND makes the executor's needs treat it as optional
@@ -869,6 +869,102 @@ exports.checkGithubImageCasing = checkGithubImageCasing;
869
869
 
870
870
  /***/ }),
871
871
 
872
+ /***/ 64286:
873
+ /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
874
+
875
+ "use strict";
876
+
877
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
878
+ exports.checkGithubReleaseWorkflow = exports.findReleaseJobImageDrift = void 0;
879
+ const promises_1 = __nccwpck_require__(91943);
880
+ const path_1 = __nccwpck_require__(16928);
881
+ const pipeline_1 = __nccwpck_require__(53695);
882
+ const yaml_1 = __nccwpck_require__(99292);
883
+ const WORKFLOWS_FOLDER = ".github/workflows";
884
+ /** the job name of the release job, see githubReleaseJobs.ts */
885
+ const RELEASE_JOB_NAME = "create release";
886
+ const releaseJobImage = (workflow) => {
887
+ var _a;
888
+ const job = Object.values((_a = workflow.jobs) !== null && _a !== void 0 ? _a : {}).find((job) => (job === null || job === void 0 ? void 0 : job.name) === RELEASE_JOB_NAME);
889
+ const container = job === null || job === void 0 ? void 0 : job.container;
890
+ if (typeof container === "string")
891
+ return container;
892
+ if (container && typeof container === "object" && "image" in container) {
893
+ return `${container.image}`;
894
+ }
895
+ return null;
896
+ };
897
+ /**
898
+ * compares the release job image of every generated workflow carrying
899
+ * one against the committed workflow of the same name. The job images
900
+ * are tagged by a content hash of their definition, so a differing tag
901
+ * means the committed workflow runs an older release image.
902
+ */
903
+ const findReleaseJobImageDrift = (generated, committed) => Object.entries(generated).flatMap(([file, workflow]) => {
904
+ var _a;
905
+ const expected = releaseJobImage(workflow);
906
+ if (!expected)
907
+ return [];
908
+ const content = committed[file];
909
+ let committedImage = null;
910
+ if (content) {
911
+ try {
912
+ committedImage = releaseJobImage((_a = (0, yaml_1.parse)(content)) !== null && _a !== void 0 ? _a : {});
913
+ }
914
+ catch (_b) {
915
+ committedImage = null;
916
+ }
917
+ }
918
+ return committedImage === expected
919
+ ? []
920
+ : [{ file, expected, committed: committedImage }];
921
+ });
922
+ exports.findReleaseJobImageDrift = findReleaseJobImageDrift;
923
+ /**
924
+ * the release job image in the committed workflows must be the one this
925
+ * catladder version generates. The image tag encodes the image
926
+ * definition, so an older tag means an older release script — which is
927
+ * more than cosmetics: the semantic-release image before this check
928
+ * pushed with the workflow token and ignored the release deploy key,
929
+ * so every release on a repository with merge gating failed on GH013
930
+ * while `project setup` and the deploy-key checks reported all green.
931
+ *
932
+ * Needs no `gh` login — only the config and the committed files.
933
+ */
934
+ const checkGithubReleaseWorkflow = async (report, config) => {
935
+ if (!(0, pipeline_1.getEnabledPipelineTypes)(config).includes("github"))
936
+ return;
937
+ report.section("github release workflow");
938
+ let generated;
939
+ try {
940
+ const images = new pipeline_1.JobImagesPlan("github", config.images, await (0, pipeline_1.resolveGithubRegistryImage)(config));
941
+ generated = await new pipeline_1.GithubBackend().createWorkflows(config, images);
942
+ }
943
+ catch (e) {
944
+ report.warn(`could not generate the github workflows (${e.message})`);
945
+ return;
946
+ }
947
+ const files = Object.keys(generated).filter((file) => releaseJobImage(generated[file]));
948
+ const committed = {};
949
+ for (const file of files) {
950
+ committed[file] = await (0, promises_1.readFile)((0, path_1.join)(WORKFLOWS_FOLDER, file), "utf8").catch(() => null);
951
+ }
952
+ const drift = (0, exports.findReleaseJobImageDrift)(generated, committed);
953
+ if (drift.length === 0) {
954
+ report.ok(`release job image up to date in ${files.length} generated workflow(s)`);
955
+ return;
956
+ }
957
+ for (const { file, expected, committed } of drift) {
958
+ report.fail(committed
959
+ ? `${WORKFLOWS_FOLDER}/${file}: the release job runs ${committed}, this catladder version generates ${expected} — the committed workflow was generated by an older catladder (its release script may push with the workflow token, ignoring the release deploy key)`
960
+ : `${WORKFLOWS_FOLDER}/${file}: missing or without a '${RELEASE_JOB_NAME}' job (expected image ${expected})`, "run: catenv (and commit the regenerated workflows)");
961
+ }
962
+ };
963
+ exports.checkGithubReleaseWorkflow = checkGithubReleaseWorkflow;
964
+ //# sourceMappingURL=checkGithubReleaseWorkflow.js.map
965
+
966
+ /***/ }),
967
+
872
968
  /***/ 26904:
873
969
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
874
970
 
@@ -1014,6 +1110,7 @@ const getProjectConfig_1 = __nccwpck_require__(70478);
1014
1110
  const checkCloudRun_1 = __nccwpck_require__(55869);
1015
1111
  const checkGithub_1 = __nccwpck_require__(88480);
1016
1112
  const checkGithubImageCasing_1 = __nccwpck_require__(12668);
1113
+ const checkGithubReleaseWorkflow_1 = __nccwpck_require__(64286);
1017
1114
  const checkGitlab_1 = __nccwpck_require__(26904);
1018
1115
  const checkStore_1 = __nccwpck_require__(62878);
1019
1116
  const DoctorReport_1 = __nccwpck_require__(87354);
@@ -1050,6 +1147,7 @@ const doctorProject = async (instance, onlyComponents) => {
1050
1147
  }
1051
1148
  await (0, checkCloudRun_1.checkCloudRun)(report, contexts);
1052
1149
  await (0, checkGithubImageCasing_1.checkGithubImageCasing)(report, config);
1150
+ await (0, checkGithubReleaseWorkflow_1.checkGithubReleaseWorkflow)(report, config);
1053
1151
  await (0, checkGithub_1.checkGithub)(report, config);
1054
1152
  report.summarize();
1055
1153
  };
@@ -1094,7 +1192,10 @@ exports.MERGE_GATING_RULESET_NAME = "catladder merge gating";
1094
1192
  exports.RELEASE_DEPLOY_KEY_TITLE = "catladder release";
1095
1193
  /**
1096
1194
  * actions secret holding the deploy key's private half; the generated
1097
- * release jobs pass it to catci, which pushes over ssh when it is set
1195
+ * release jobs pass it into the job env and both release methods push
1196
+ * over ssh with it when it is set — changesets from catci itself,
1197
+ * semantic-release via the ssh repository url catci prepares for it
1198
+ * (see src/release/githubDeployKey.ts)
1098
1199
  */
1099
1200
  exports.RELEASE_DEPLOY_KEY_SECRET = "CATLADDER_RELEASE_KEY";
1100
1201
  /** the ruleset `project setup` creates (and restores on drift) */
@@ -9129,10 +9230,19 @@ const TRIGGER_WORKFLOWS = {
9129
9230
  },
9130
9231
  taggedRelease: {
9131
9232
  name: "🛠️ catladder release",
9132
- // tags pushed with the default GITHUB_TOKEN (as the release job
9133
- // does) don't trigger `on: push: tags` the release job therefore
9134
- // also dispatches this workflow explicitly for the new tag
9233
+ // tags pushed with the default GITHUB_TOKEN don't trigger `on:
9234
+ // push: tags`, and the release job's deploy-key push carries
9235
+ // [skip ci] the release job therefore dispatches this workflow
9236
+ // explicitly for the new tag (the only run for it)
9135
9237
  on: { push: { tags: ["v*"] }, workflow_dispatch: {} },
9238
+ // one run per tag at a time, never cancelled: should a second run
9239
+ // for the same tag ever start (a redispatch, or a project whose
9240
+ // own .releaserc drops the [skip ci] marker), it waits instead of
9241
+ // deploying on top of the first
9242
+ concurrency: {
9243
+ group: "catladder-release-${{ github.ref_name }}",
9244
+ "cancel-in-progress": false,
9245
+ },
9136
9246
  },
9137
9247
  };
9138
9248
  class GithubBackend {
@@ -11245,9 +11355,20 @@ const createGitlabPipelineWithDefaults = ({ image, variables, before_script, aut
11245
11355
  ],
11246
11356
  workflow: {
11247
11357
  name: "$PIPELINE_ICON $PIPELINE_NAME",
11358
+ // superseded pipelines must actually die: "interruptible" cancels
11359
+ // every interruptible job, while gitlab's default "conservative"
11360
+ // lets one started `interruptible: false` job shield the whole
11361
+ // pipeline from cancellation. The rules below opt the pipelines
11362
+ // that must run to completion back out.
11363
+ // NOTE: this only tunes the project setting "Auto-cancel
11364
+ // redundant pipelines" — with that setting off nothing cancels.
11365
+ auto_cancel: { on_new_commit: "interruptible" },
11248
11366
  rules: [
11249
11367
  {
11250
11368
  if: '$CI_PIPELINE_SOURCE == "trigger"',
11369
+ // an agent run is not redundant work: a commit landing while
11370
+ // it thinks must not kill it
11371
+ auto_cancel: { on_new_commit: "none" },
11251
11372
  variables: {
11252
11373
  PIPELINE_ICON: "🤖",
11253
11374
  PIPELINE_NAME: "Thinking...",
@@ -11276,6 +11397,11 @@ const createGitlabPipelineWithDefaults = ({ image, variables, before_script, aut
11276
11397
  },
11277
11398
  {
11278
11399
  if: rules_1.RULE_IS_TAGGED_RELEASE.if,
11400
+ // a release pipeline always runs through: tags are immutable,
11401
+ // so this only bites when someone force-moves one — and a
11402
+ // release cancelled halfway leaves the version published in
11403
+ // some places and missing in others
11404
+ auto_cancel: { on_new_commit: "none" },
11279
11405
  variables: {
11280
11406
  PIPELINE_ICON: "🐱📦",
11281
11407
  PIPELINE_NAME: "Release $CI_COMMIT_TAG",
@@ -11392,6 +11518,12 @@ mainBranchJobNames) => {
11392
11518
  image: releaseImage,
11393
11519
  script: [method.script],
11394
11520
  after_script: [EXPIRED_TOKEN_HELP],
11521
+ // a release in flight must never be killed by a new commit — a
11522
+ // half-published version (tag pushed, npm publish missing) is not
11523
+ // recoverable by re-running. Under gitlab's default "conservative"
11524
+ // auto-cancel this also shields the rest of the pipeline, but only
11525
+ // once the release actually started, which is late by construction.
11526
+ interruptible: false,
11395
11527
  };
11396
11528
  const forceReleaseJob = {
11397
11529
  ["⚠️ force create release"]: {
@@ -11415,6 +11547,10 @@ mainBranchJobNames) => {
11415
11547
  stage: "test",
11416
11548
  image: releaseImage,
11417
11549
  script: [method.checkScript],
11550
+ // a redundant report is worthless: without this the job
11551
+ // defaults to interruptible: false and, once started, stops
11552
+ // gitlab from auto-cancelling the superseded MR pipeline
11553
+ interruptible: true,
11418
11554
  allow_failure: true,
11419
11555
  artifacts: {
11420
11556
  paths: ["changeset-report.md"],
@@ -11484,6 +11620,9 @@ mainBranchJobNames) => {
11484
11620
  script: [
11485
11621
  `echo "release queued — '${exports.RELEASE_EXECUTOR_JOB_NAME}' runs it as soon as every other job in this pipeline succeeded"`,
11486
11622
  ],
11623
+ // the recorded intent must survive a new commit: cancelling it
11624
+ // would silently drop the queued release
11625
+ interruptible: false,
11487
11626
  needs: [],
11488
11627
  // allow_failure keeps the unclicked button from blocking the
11489
11628
  // pipeline AND makes the executor's needs treat it as optional
@@ -4,7 +4,9 @@
4
4
  # (@semantic-release/git and @semantic-release/changelog need node >=24.15).
5
5
  FROM node:24-alpine
6
6
 
7
- RUN apk add --no-cache bash git git-lfs
7
+ # openssh: on github the release job pushes with the release deploy key
8
+ # over ssh (see scripts/semanticRelease)
9
+ RUN apk add --no-cache bash git git-lfs openssh-client
8
10
 
9
11
  # add semantic release
10
12
  # NOTE: pin every dependency exactly. These are the semantic-release@25 line
@@ -39,7 +39,34 @@ fi
39
39
 
40
40
  echo "doing semantic release"
41
41
 
42
+ SEMANTIC_RELEASE_ARGS=()
43
+ # the commit message suffix, see the @semantic-release/git config below
44
+ RELEASE_COMMIT_SUFFIX=""
42
45
  if [ "$GITHUB_ACTIONS" = "true" ]; then
46
+ # [skip ci] on github only: a push with the deploy key triggers
47
+ # workflows (unlike a push with GITHUB_TOKEN), and neither the release
48
+ # commit nor the tag needs a push-triggered run — the taggedRelease
49
+ # workflow is dispatched explicitly at the end, the marker keeps it
50
+ # the only run (same as the changesets path). On gitlab the tag
51
+ # pipeline MUST fire natively, so no marker there.
52
+ RELEASE_COMMIT_SUFFIX=" [skip ci]"
53
+
54
+ if [ -n "$CATLADDER_RELEASE_KEY" ]; then
55
+ # merge gating (a ruleset requiring the `catladder ✅` check on the
56
+ # default branch) rejects the release push unless it comes from the
57
+ # release deploy key — the workflow token can never bypass a
58
+ # ruleset. catci writes the key, points git's ssh at it and checks
59
+ # that the key reaches the repository (a clear failure here instead
60
+ # of a GH013 inside @semantic-release/git). The ssh url has to be
61
+ # passed explicitly: semantic-release takes package.json's
62
+ # `repository` over origin, and origin is the token-authenticated
63
+ # https url actions/checkout left behind.
64
+ RELEASE_REPOSITORY_URL=$(node "$CATCI" release github-deploy-key-remote)
65
+ SEMANTIC_RELEASE_ARGS+=(--repository-url "$RELEASE_REPOSITORY_URL")
66
+ else
67
+ echo "CATLADDER_RELEASE_KEY not set — pushing with the workflow token (fails on a repository with merge gating: run 'catladder project setup')"
68
+ fi
69
+
43
70
  # the github counterpart of the gitlab plugin below: it creates the
44
71
  # entry on the releases page with the generated notes. Everything
45
72
  # beyond that is switched off on purpose — commenting on the
@@ -62,6 +89,10 @@ else
62
89
  "@semantic-release/gitlab"'
63
90
  fi
64
91
 
92
+ # NOTE: a project bringing its own .releaserc has to keep "[skip ci]" in
93
+ # the git plugin's commit message on github (see RELEASE_COMMIT_SUFFIX),
94
+ # otherwise a deploy-key push starts the main workflow for the release
95
+ # commit and a second taggedRelease run for the tag.
65
96
  if [ ! -e .releaserc ]; then
66
97
  cat >.releaserc <<EOF
67
98
  {
@@ -98,7 +129,7 @@ if [ ! -e .releaserc ]; then
98
129
  # loop-prevention rule keys on the literal "chore(release)" prefix, so keep
99
130
  # this literal. Don't "fix" it back to \${branch.type}.
100
131
  ["@semantic-release/git", {
101
- "message": "chore(release): \${nextRelease.version}\n\n\${nextRelease.notes}"
132
+ "message": "chore(release): \${nextRelease.version}${RELEASE_COMMIT_SUFFIX}\n\n\${nextRelease.notes}"
102
133
  }]${PUBLISH_PLUGIN}
103
134
  ],
104
135
  "branches": [
@@ -124,11 +155,13 @@ if [ "$GITHUB_ACTIONS" = "true" ]; then
124
155
  TAGS_BEFORE=$(git tag --list 'v[0-9]*')
125
156
  fi
126
157
 
127
- semantic-release
158
+ semantic-release "${SEMANTIC_RELEASE_ARGS[@]}"
128
159
 
129
160
  # tags pushed with the default GITHUB_TOKEN don't trigger `on: push:
130
- # tags` workflows (github's recursion guard) dispatch the
131
- # taggedRelease workflow explicitly for a tag semantic-release created
161
+ # tags` workflows (github's recursion guard), and a deploy-key push
162
+ # carries [skip ci] (see above) dispatch the taggedRelease workflow
163
+ # explicitly for a tag semantic-release created, whichever way it was
164
+ # pushed
132
165
  if [ "$GITHUB_ACTIONS" = "true" ] && [ -f "$CATCI" ]; then
133
166
  if [ -z "$TAGS_BEFORE" ]; then
134
167
  NEW_TAG=$(git tag --list 'v[0-9]*' | tail -n1)
@@ -183,10 +183,15 @@ skill for the exact command surface.
183
183
  - **GitLab** needs a `GL_TOKEN` project access token (named
184
184
  `semantic-release`) to push the release commit and tag. It is created
185
185
  and rotated by `yarn catladder project setup`.
186
- - **GitHub** needs nothing extra the release jobs use the built-in
187
- `github.token`. Tags pushed by that token do not retrigger workflows,
188
- so the release job dispatches the tagged-release workflow explicitly;
189
- that is built in and needs no configuration.
186
+ - **GitHub** needs the release deploy key that `yarn catladder project
187
+ setup` provisions together with the merge gating (Step 9): the release
188
+ job pushes the release commit and tag over ssh with it, because the
189
+ built-in `github.token` can never bypass the required `catladder ✅`
190
+ check on the default branch (the push fails with GH013 otherwise).
191
+ Without merge gating the job falls back to the token. The release
192
+ commit carries `[skip ci]` and the release job dispatches the
193
+ tagged-release workflow explicitly (one run per tag); that is built
194
+ in and needs no configuration.
190
195
  - **Only one backend should own releases at a time.** Both backends
191
196
  generate release jobs, and with `releases: { when: "auto" }` both would
192
197
  try to tag the same commit. During the parallel phase, agree with the
@@ -287,9 +292,13 @@ now-wrong `gitRemote`, regenerate once more, and finish with
287
292
  token bypass rulesets, so setup provisions a write deploy key
288
293
  ("catladder release", private half in the `CATLADDER_RELEASE_KEY`
289
294
  actions secret; deploy keys never expire) that the release job
290
- pushes with over ssh. Classic branch protection has no bypass list
295
+ pushes with over ssh with both release methods, semantic-release
296
+ and changesets. Classic branch protection has no bypass list
291
297
  at all, which is why setup uses a ruleset and migrates old
292
- classic-protection gating away. `project doctor` verifies all of it.
298
+ classic-protection gating away. `project doctor` verifies all of it,
299
+ including that the committed release workflow runs the release image
300
+ of the installed catladder (an older semantic-release image pushed
301
+ with the token and ignored the key — regenerate with `catenv`).
293
302
  Required reviews stay a human choice.
294
303
  - Tell the team where the pipeline lives now and how manual actions
295
304
  work there (on GitHub, manual jobs are dispatch workflows in the
@@ -37,6 +37,38 @@ Generated layout:
37
37
  Stages: setup → test → build → deploy → verify (post-deploy checks),
38
38
  plus stop jobs for review-app teardown.
39
39
 
40
+ ## Superseded pipelines are cancelled
41
+
42
+ Pushing a new commit cancels the pipeline of the previous one, so the
43
+ runners are not busy with results nobody will read.
44
+
45
+ | Pipeline | On a new commit |
46
+ |---|---|
47
+ | `mr` | cancelled |
48
+ | `mainBranch` (dev) | cancelled, except a release already running |
49
+ | `taggedRelease` | **runs through** — never cancelled |
50
+ | agent runs (`trigger`) | **runs through** — never cancelled |
51
+
52
+ - **GitHub**: the generated MR workflow sets `concurrency` with
53
+ `cancel-in-progress: true`.
54
+ - **GitLab**: generated `workflow:auto_cancel:on_new_commit:
55
+ interruptible`, with per-rule `none` for tags and agent runs. Every
56
+ job carries an explicit `interruptible`, jobs that must finish
57
+ (release jobs, agent jobs) carry `interruptible: false`.
58
+
59
+ **GitLab requires the project setting too.** The generated YAML only
60
+ tunes *how* redundant pipelines are cancelled — it does not switch the
61
+ feature on. If old pipelines keep running, check **Settings > CI/CD >
62
+ General pipelines > Auto-cancel redundant pipelines**; with that
63
+ checkbox off nothing is ever cancelled. (`catladder project-doctor`
64
+ does not check this.)
65
+
66
+ **Adding a hand-written GitLab job?** Set `interruptible` explicitly.
67
+ GitLab defaults it to `false`, and a non-interruptible job that has
68
+ started keeps *itself* alive — under gitlab's own default
69
+ (`conservative`, which catladder overrides) it would shield the whole
70
+ pipeline from cancellation.
71
+
40
72
  ## Review-app auto-stop and pinning (GitLab)
41
73
 
42
74
  GitLab review environments stop automatically after 1 week, dev
@@ -128,6 +128,20 @@ the `security` commands in the `catladder-cli` reference.
128
128
  MR adding a changeset describing the accumulated work.
129
129
  - Wrong version bump → check commit types (semantic-release) or the bump
130
130
  levels in the changeset files (changesets).
131
+ - GitHub: the push is rejected with `GH013 … Required status check
132
+ "catladder ✅" is expected` (or GH006) → the release push has to use
133
+ the release deploy key, the only actor that bypasses the merge-gating
134
+ ruleset. `yarn catladder project setup` provisions it (deploy key
135
+ `catladder release` + secret `CATLADDER_RELEASE_KEY`), `yarn catladder
136
+ project doctor` verifies it — including that the committed release
137
+ workflow runs the current release image; an older semantic-release
138
+ image pushed with the workflow token and ignored the key (regenerate
139
+ with `yarn catenv` and commit).
140
+ - GitHub, semantic-release with a project-provided `.releaserc`: keep
141
+ `[skip ci]` in the `@semantic-release/git` commit message. The
142
+ deploy-key push triggers workflows, and without the marker the release
143
+ commit starts a main run and the tag a second tagged run next to the
144
+ one the release job dispatches.
131
145
  - Tag pushed but nothing on the releases page → with `changesets` the
132
146
  entry is created via the host api after the push and never fails the
133
147
  job (the release itself is done); look for the `could not create the
@@ -42,10 +42,19 @@ const TRIGGER_WORKFLOWS = {
42
42
  },
43
43
  taggedRelease: {
44
44
  name: "🛠️ catladder release",
45
- // tags pushed with the default GITHUB_TOKEN (as the release job
46
- // does) don't trigger `on: push: tags` the release job therefore
47
- // also dispatches this workflow explicitly for the new tag
45
+ // tags pushed with the default GITHUB_TOKEN don't trigger `on:
46
+ // push: tags`, and the release job's deploy-key push carries
47
+ // [skip ci] the release job therefore dispatches this workflow
48
+ // explicitly for the new tag (the only run for it)
48
49
  on: { push: { tags: ["v*"] }, workflow_dispatch: {} },
50
+ // one run per tag at a time, never cancelled: should a second run
51
+ // for the same tag ever start (a redispatch, or a project whose
52
+ // own .releaserc drops the [skip ci] marker), it waits instead of
53
+ // deploying on top of the first
54
+ concurrency: {
55
+ group: "catladder-release-${{ github.ref_name }}",
56
+ "cancel-in-progress": false,
57
+ },
49
58
  },
50
59
  };
51
60
  class GithubBackend {
@@ -1 +1 @@
1
- {"version":3,"file":"GithubBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/GithubBackend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GithubBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/GithubBackend.ts"],"names":[],"mappings":";;;AAAA,0CAAkD;AAClD,+BAA4B;AAC5B,gEAA6D;AAE7D,+CAA2D;AAI3D,+CAA6D;AAC7D,mDAA6D;AAC7D,oCAA8C;AAC9C,yDAI4B;AAC5B,oEAAiE;AACjE,uDAA8D;AAC9D,2DAA4D;AAC5D,2DAAkE;AAClE,2DAK6B;AAC7B,+CAAyE;AAEzE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C;;;GAGG;AACH,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAE3C,sEAAsE;AACtE,oEAAoE;AACpE,oEAAoE;AACpE,kEAAkE;AAClE,iEAAiE;AACjE,MAAM,iBAAiB,GAGnB;IACF,EAAE,EAAE;QACF,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE;QACtE,WAAW,EAAE;YACX,KAAK,EAAE,6CAA6C;YACpD,oBAAoB,EAAE,IAAI;SAC3B;KACF;IACD,UAAU,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,6CAA6C;QAC7C,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;KACrC;IACD,aAAa,EAAE;QACb,IAAI,EAAE,uBAAuB;QAC7B,+DAA+D;QAC/D,6DAA6D;QAC7D,iEAAiE;QACjE,mDAAmD;QACnD,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;QACrD,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,gCAAgC;QAChC,WAAW,EAAE;YACX,KAAK,EAAE,0CAA0C;YACjD,oBAAoB,EAAE,KAAK;SAC5B;KACF;CACF,CAAC;AAEF,MAAa,aAAa;IAA1B;QACW,SAAI,GAAG,QAAiB,CAAC;IA4UpC,CAAC;IA1UC,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,CAAC,GAAG,CACf,OAAO;aACJ,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,iBAAM,EAAC,IAAA,WAAI,EAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CACvD,CAAC;QACF,MAAM,IAAA,aAAE,EAAC,mCAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,qEAAqE;QACrE,oEAAoE;QACpE,kDAAkD;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAClC,MAAM,EACN,MAAM,IAAA,0CAA0B,EAAC,MAAM,CAAC,CACzC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtE,OAAO;YACL,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1D,IAAI,EAAE,IAAA,WAAI,EAAC,gBAAgB,EAAE,QAAQ,CAAC;gBACtC,OAAO,EAAE,QAA8C;aACxD,CAAC,CAAC;YACH,6DAA6D;YAC7D,GAAG,OAAO,CAAC,iBAAiB,EAAE;YAC9B,GAAG,MAAM,CAAC,iBAAiB,EAAE;YAC7B,gEAAgE;YAChE,GAAG,IAAA,qCAAsB,GAAE;SAC5B,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,aAAsB;QAC7D,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,SAAwB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EACrD,UAA6B,IAAI,+BAAiB,EAAE;;QAEpD,MAAM,SAAS,GAAmC,EAAE,CAAC;QAErD,kEAAkE;QAClE,oEAAoE;QACpE,qEAAqE;QACrE,4DAA4D;QAC5D,MAAM,WAAW,GAAG;YAClB,GAAG,IAAA,0CAA4B,EAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC1D,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe;SACzD,CAAC;QAEF,MAAM,cAAc,GAA8B,EAAE,CAAC;QACrD,oEAAoE;QACpE,kEAAkE;QAClE,kEAAkE;QAClE,oEAAoE;QACpE,oEAAoE;QACpE,iEAAiE;QACjE,yDAAyD;QACzD,MAAM,iBAAiB,GAAyC;YAC9D,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC7D,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;SAClE,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,8BAAqB,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAa,EAAC;gBAClC,MAAM;gBACN,OAAO;gBACP,YAAY,EAAE,IAAI,CAAC,IAAI;aACxB,CAAC,CAAC;YAEH,MAAM,iBAAiB,GAAG,IAAA,uCAAoB,EAAC,OAAO,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAA,qCAAkB,EAAC,OAAO,CAAC,CAAC;YAEhD,mEAAmE;YACnE,yCAAyC;YACzC,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,GAAG,EAGxB,CAAC;YACJ,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CACpD,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CACjC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1B,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,IAAA,gCAAa,EACnC,OAAO,EACP,GAAG,EACH,OAAO,EACP,iBAAiB,EACjB,MAAM,EACN,OAAO,EACP,WAAW,CACZ,CAAC;gBACF,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CACL,CAAC;YAEF,oEAAoE;YACpE,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC;gBACjE,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;oBAClC,cAAc,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;oBAC/B,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,oEAAoE;YACpE,iEAAiE;YACjE,mBAAmB;YACnB,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC;iBAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;iBACtE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAErB,iEAAiE;YACjE,qEAAqE;YACrE,+DAA+D;YAC/D,oEAAoE;YACpE,iEAAiE;YACjE,8DAA8D;YAC9D,sEAAsE;YACtE,qEAAqE;YACrE,mEAAmE;YACnE,kEAAkE;YAClE,mEAAmE;YACnE,wDAAwD;YACxD,+DAA+D;YAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC/C,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC9C,KAAK,MAAM,IAAI,IAAI,MAAA,SAAS,CAAC,KAAK,mCAAI,EAAE,EAAE,CAAC;oBACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;wBAAE,SAAS;oBACrC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,IAAI;wBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;wBACnB,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;YACpD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,GAAuB,CAAC;gBAC5B,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;oBACzC,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACnC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,IAAI,CAAC;wBAAE,SAAS,CAAC,+BAA+B;oBAChE,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;wBACnB,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBAChC,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACjB,KAAK,MAAM,IAAI,IAAI,MAAA,MAAA,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,SAAS,CAAC,KAAK,mCAAI,EAAE,EAAE,CAAC;wBAC/D,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;oBAC/D,CAAC;oBACD,KAAK,MAAM,SAAS,IAAI,MAAA,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,EAAE,CAAC;wBAClD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAChE,CAAC;YACF,MAAM,IAAI,GAA8B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,MAAM,EAAE,CAAC;oBACX,yDAAyD;oBACzD,4DAA4D;oBAC5D,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CACxB,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CACjD,EAAE,CAAC;wBACF,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBACvC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;wBAC5B,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;6BAChC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;6BAC/C,IAAI,EAAE;6BACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,IAAI,GAAG,CAAC;6BACxC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;gBACvB,CAAC;YACH,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC;gBACtD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,OAAO,CAAC;gBAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAA,6CAAyB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC7B,4DAA4D;gBAC5D,uBAAuB;gBACvB,MAAM,CAAC,MAAM,CACX,IAAI,EACJ,IAAA,wCAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CACxD,CAAC;gBAEF,6DAA6D;gBAC7D,oDAAoD;gBACpD,SAAS,CAAC,GAAG,qBAAqB,oBAAoB,CAAC;oBACrD,IAAA,kDAA8B,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAE9D,+DAA+D;gBAC/D,yCAAyC;gBACzC,MAAM,cAAc,GAAG,IAAA,mDAA+B,EACpD,MAAM,EACN,MAAM,EACN,iBAAiB,CAAC,UAAU,CAAC,IAAI,EACjC,WAAW,CACZ,CAAC;gBACF,IAAI,cAAc,EAAE,CAAC;oBACnB,SAAS,CAAC,GAAG,qBAAqB,sBAAsB,CAAC;wBACvD,cAAc,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG,EAAE,GAAG,IAAA,2CAAyB,EAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;gBACvE,SAAS,CAAC,GAAG,qBAAqB,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;oBAClE,GAAG,iBAAiB,CAAC,OAAO,CAAC;oBAC7B,GAAG,mBAAmB,CAAC,MAAM,CAAC;oBAC9B,GAAG,EAAE,WAAW;oBAChB,4DAA4D;oBAC5D,oDAAoD;oBACpD,6DAA6D;oBAC7D,4DAA4D;oBAC5D,0DAA0D;oBAC1D,yDAAyD;oBACzD,wBAAwB;oBACxB,IAAI,EACF,OAAO,KAAK,IAAI;wBACd,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,GAAG,IAAA,yCAAqB,EAAC,YAAY,CAAC,EAAE;wBAC7D,CAAC,CAAC,YAAY;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,SAAS,CAAC,GAAG,qBAAqB,iBAAiB,CAAC,GAAG;gBACrD,IAAI,EAAE,8BAA8B;gBACpC,EAAE,EAAE;oBACF,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;oBACnC,4DAA4D;oBAC5D,qDAAqD;oBACrD,uDAAuD;oBACvD,cAAc;oBACd,iBAAiB,EAAE;wBACjB,MAAM,EAAE;4BACN,EAAE,EAAE;gCACF,WAAW,EACT,qDAAqD;gCACvD,QAAQ,EAAE,IAAI;gCACd,IAAI,EAAE,QAAQ;6BACf;yBACF;qBACF;iBACF;gBACD,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAC9B,GAAG,EAAE;oBACH,GAAG,WAAW;oBACd,yDAAyD;oBACzD,uCAAuC;oBACvC,YAAY,EAAE,yCAAyC;iBACxD;gBACD,IAAI,EAAE,EAAE,GAAG,IAAA,2CAAyB,EAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE;aAClE,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAE5D,EAAE,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1C,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,mEAAmE;YACnE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;YACxC,gEAAgE;YAChE,iEAAiE;YACjE,iCAAiC;YACjC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/C,MAAM,SAAS,GACb,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACrB,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM;gBAC9C,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACnB,CAAC,CAAC,EAAE,CAAC;YACT,SAAS,CAAC,GAAG,qBAAqB,GAAG,IAAI,MAAM,CAAC,GAAG;gBACjD,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE;gBACvD,EAAE,EAAE;oBACF,iBAAiB,EAAE,UAAU;wBAC3B,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC;4BACE,MAAM,EAAE;gCACN,GAAG,EAAE;oCACH,WAAW,EAAE,iBAAiB;oCAC9B,QAAQ,EAAE,IAAI;oCACd,IAAI,EAAE,QAAQ;oCACd,OAAO;iCACR;6BACF;yBACF;iBACN;gBACD,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAC9B,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE;oBACJ,GAAG,IAAA,2CAAyB,EAAC,MAAM,CAAC;oBACpC,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;wBAC7C,EAAE;wBACF,UAAU;4BACR,CAAC,CAAC,GAAG;4BACL,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,QAAQ,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;qBACvD,CAAC,CACH;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA7UD,sCA6UC;AAED;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,OAAsB,EAAE,EAAE,CAAC,CAAC;IACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;CACrD,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAU,EAAE;IAC5D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,YAAY,CAAC;QACtB,KAAK,YAAY;YACf,OAAO,UAAU,CAAC;QACpB,KAAK,eAAe;YAClB,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,mBAAmB,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,GAAiB,EAAE,EAAE;;IAC9D,OAAA,CAAA,MAAA,GAAG,CAAC,WAAW,0CAAE,MAAM,MAAK,MAAM;QAClC,OAAO,CAAC,IAAI,KAAK,WAAW;QAC5B,OAAO,CAAC,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAA;CAAA,CAAC;AAE3C;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAC,GAAiB,EAAE,EAAE,CAC5C,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC;AAsBnD,MAAM,0BAA0B,GAA+B;IAC7D,MAAM,EAAE,qBAAqB;IAC7B,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,uBAAuB;CAClC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,GAAiB,EAAc,EAAE,CACnD,GAAG,CAAC,KAAK,KAAK,MAAM;IAClB,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,UAAU;QACxB,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,QAAQ,CAAC"}
@@ -33,9 +33,20 @@ const createGitlabPipelineWithDefaults = ({ image, variables, before_script, aut
33
33
  ],
34
34
  workflow: {
35
35
  name: "$PIPELINE_ICON $PIPELINE_NAME",
36
+ // superseded pipelines must actually die: "interruptible" cancels
37
+ // every interruptible job, while gitlab's default "conservative"
38
+ // lets one started `interruptible: false` job shield the whole
39
+ // pipeline from cancellation. The rules below opt the pipelines
40
+ // that must run to completion back out.
41
+ // NOTE: this only tunes the project setting "Auto-cancel
42
+ // redundant pipelines" — with that setting off nothing cancels.
43
+ auto_cancel: { on_new_commit: "interruptible" },
36
44
  rules: [
37
45
  {
38
46
  if: '$CI_PIPELINE_SOURCE == "trigger"',
47
+ // an agent run is not redundant work: a commit landing while
48
+ // it thinks must not kill it
49
+ auto_cancel: { on_new_commit: "none" },
39
50
  variables: {
40
51
  PIPELINE_ICON: "🤖",
41
52
  PIPELINE_NAME: "Thinking...",
@@ -64,6 +75,11 @@ const createGitlabPipelineWithDefaults = ({ image, variables, before_script, aut
64
75
  },
65
76
  {
66
77
  if: rules_1.RULE_IS_TAGGED_RELEASE.if,
78
+ // a release pipeline always runs through: tags are immutable,
79
+ // so this only bites when someone force-moves one — and a
80
+ // release cancelled halfway leaves the version published in
81
+ // some places and missing in others
82
+ auto_cancel: { on_new_commit: "none" },
67
83
  variables: {
68
84
  PIPELINE_ICON: "🐱📦",
69
85
  PIPELINE_NAME: "Release $CI_COMMIT_TAG",
@@ -1 +1 @@
1
- {"version":3,"file":"createGitlabPipeline.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/gitlab/createGitlabPipeline.ts"],"names":[],"mappings":";;;AACA,0CAAwD;AACxD,6CAIwB;AACxB,uCAIqB;AAGrB;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAElC,MAAM,gCAAgC,GAAG,CAAC,EAC/C,KAAK,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,GAAG,MAAM,EAGV,EAAsB,EAAE;IACvB,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAC/C,OAAO;QACL,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,sBAAsB;QACtC,SAAS,EAAE;YACT,cAAc,EAAE,MAAM,EAAE,uFAAuF;YAC/G,0BAA0B,EAAE,MAAM,EAAE,kCAAkC;YACtE,uBAAuB,EAAE,MAAM,EAAE,gCAAgC;YACjE,wBAAwB,EAAE,IAAI,EAAE,0EAA0E;YAE1G,SAAS,EAAE,GAAG,EAAE,yBAAyB;YACzC,0DAA0D;YAC1D,0DAA0D;YAC1D,4CAA4C;YAC5C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,oCAAyB,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;SACrB;QACD,aAAa,EAAE;YACb,GAAG,CAAC,GAAG,4BAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpD,MAAM,CAAC,cAAc,EAAE,CACxB;YACD,GAAG,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC;SACzB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,+BAA+B;YACrC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,mCAAmC;oBACvC,SAAS,EAAE;wBACT,aAAa,EAAE,IAAI;wBACnB,aAAa,EAAE,aAAa;qBAC7B;iBACF;gBACD,+DAA+D;gBAC/D,uCAAuC;gBACvC,GAAG,CAAC,QAAQ;oBACV,CAAC,CAAC;wBACE;4BACE,EAAE,EAAE,GAAG,6BAAqB,CAAC,EAAE,oCAAoC,IAAA,iCAAsB,EAAC,QAAQ,CAAC,GAAG;4BACtG,SAAS,EAAE;gCACT,aAAa,EAAE,MAAM;gCACrB,aAAa,EACX,mDAAmD;gCACrD,CAAC,oCAAyB,CAAC,EAAE,OAAO;6BACrC;yBACF;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP;oBACE,EAAE,EAAE,6BAAqB,CAAC,EAAE;oBAC5B,SAAS,EAAE;wBACT,aAAa,EAAE,MAAM;wBACrB,aAAa,EAAE,mDAAmD;qBACnE;iBACF;gBACD;oBACE,EAAE,EAAE,8BAAsB,CAAC,EAAE;oBAC7B,SAAS,EAAE;wBACT,aAAa,EAAE,MAAM;wBACrB,aAAa,EAAE,wBAAwB;qBACxC;iBACF;gBACD;oBACE,EAAE,EAAE,kDAA0C,CAAC,EAAE;oBACjD,SAAS,EAAE;wBACT,aAAa,EAAE,MAAM;wBACrB,aAAa,EAAE,yBAAyB;qBACzC;iBACF;gBAED;oBACE,IAAI,EAAE,QAAQ,EAAE,WAAW;oBAC3B,SAAS,EAAE;wBACT,aAAa,EAAE,KAAK;wBACpB,aAAa,EAAE,SAAS;qBACzB;iBACF;aACF;SACF;QAED,GAAG,MAAM;KACV,CAAC;AACJ,CAAC,CAAC;AA1FW,QAAA,gCAAgC,oCA0F3C"}
1
+ {"version":3,"file":"createGitlabPipeline.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/gitlab/createGitlabPipeline.ts"],"names":[],"mappings":"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"}