@catladder/cli 0.0.0-next-e95e1f20 → 0.0.0-next-ca8f99e2

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 (28) hide show
  1. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkGithub.js +40 -0
  2. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkGithub.js.map +1 -1
  3. package/dist/apps/cli/src/apps/cli/commands/project/setup/index.js +12 -3
  4. package/dist/apps/cli/src/apps/cli/commands/project/setup/index.js.map +1 -1
  5. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupGithub.d.ts +20 -0
  6. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupGithub.js +92 -0
  7. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupGithub.js.map +1 -0
  8. package/dist/apps/cli/src/utils/github.d.ts +2 -0
  9. package/dist/apps/cli/src/utils/github.js +24 -1
  10. package/dist/apps/cli/src/utils/github.js.map +1 -1
  11. package/dist/bundles/catenv/index.js +72 -1
  12. package/dist/bundles/cli/index.js +247 -5
  13. package/dist/bundles/skills/catladder-migrate-ci-backend/SKILL.md +12 -0
  14. package/dist/packages/pipeline/src/backends/github/GithubBackend.js +12 -1
  15. package/dist/packages/pipeline/src/backends/github/GithubBackend.js.map +1 -1
  16. package/dist/packages/pipeline/src/backends/github/aggregateCheckJob.d.ts +26 -0
  17. package/dist/packages/pipeline/src/backends/github/aggregateCheckJob.js +52 -0
  18. package/dist/packages/pipeline/src/backends/github/aggregateCheckJob.js.map +1 -0
  19. package/dist/packages/pipeline/src/backends/github/index.d.ts +1 -0
  20. package/dist/packages/pipeline/src/backends/github/index.js +1 -0
  21. package/dist/packages/pipeline/src/backends/github/index.js.map +1 -1
  22. package/dist/skills/catladder-migrate-ci-backend/SKILL.md +12 -0
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +1 -1
  25. package/src/apps/cli/commands/project/doctor/checkGithub.ts +55 -0
  26. package/src/apps/cli/commands/project/setup/index.ts +17 -4
  27. package/src/apps/cli/commands/project/setup/setupGithub.ts +117 -0
  28. package/src/utils/github.ts +30 -0
@@ -710,8 +710,48 @@ const checkGithub = async (report, config) => {
710
710
  report.ok(`repo level: all ${repoLevelReferenced.length} referenced secrets/variables present`);
711
711
  }
712
712
  }
713
+ await checkGithubMergeGating(report, repo);
713
714
  };
714
715
  exports.checkGithub = checkGithub;
716
+ /**
717
+ * verifies the merge gating `project setup` configures: auto-merge
718
+ * enabled and the generated `catladder ✅` aggregate check required on
719
+ * the default branch. Without it a PR is mergeable while its checks
720
+ * are still running — gitlab ships this behavior built-in, github
721
+ * silently does not.
722
+ */
723
+ const checkGithubMergeGating = async (report, repo) => {
724
+ var _a, _b;
725
+ let repoInfo;
726
+ try {
727
+ repoInfo = await (0, github_1.ghApiJson)("GET", `repos/${repo}`);
728
+ }
729
+ catch (e) {
730
+ report.warn(`could not read repo settings of ${repo} (${e.message})`);
731
+ return;
732
+ }
733
+ if (repoInfo.allow_auto_merge) {
734
+ report.ok("auto-merge enabled");
735
+ }
736
+ else {
737
+ report.fail("auto-merge disabled — the merge-when-pipeline-succeeds button cannot appear", "run: catladder project setup");
738
+ }
739
+ const branch = repoInfo.default_branch;
740
+ const protection = await (0, github_1.ghApiJson)("GET", `repos/${repo}/branches/${branch}/protection`).catch(() => null);
741
+ const checks = (_b = (_a = protection === null || protection === void 0 ? void 0 : protection.required_status_checks) === null || _a === void 0 ? void 0 : _a.checks) !== null && _b !== void 0 ? _b : [];
742
+ if (checks.some((c) => c.context === pipeline_1.AGGREGATE_CHECK_JOB_NAME)) {
743
+ report.ok(`'${pipeline_1.AGGREGATE_CHECK_JOB_NAME}' required on ${branch}`);
744
+ }
745
+ else {
746
+ report.fail(`'${pipeline_1.AGGREGATE_CHECK_JOB_NAME}' is not a required check on ${branch} — PRs can merge while the pipeline is red or still running`, "run: catladder project setup");
747
+ }
748
+ const stale = checks.filter((c) => c.context !== pipeline_1.AGGREGATE_CHECK_JOB_NAME);
749
+ if (stale.length > 0) {
750
+ report.warn(`${branch} requires ${stale.length} additional named check(s) (${stale
751
+ .map((c) => c.context)
752
+ .join(", ")}) — job names change with components; prefer only '${pipeline_1.AGGREGATE_CHECK_JOB_NAME}'`);
753
+ }
754
+ };
715
755
  //# sourceMappingURL=checkGithub.js.map
716
756
 
717
757
  /***/ }),
@@ -976,6 +1016,7 @@ const setupAccessTokens_1 = __nccwpck_require__(48907);
976
1016
  const setupContext_1 = __nccwpck_require__(18120);
977
1017
  const setupTopic_1 = __nccwpck_require__(34612);
978
1018
  const setupAgents_1 = __nccwpck_require__(7873);
1019
+ const setupGithub_1 = __nccwpck_require__(40148);
979
1020
  const logSection_1 = __nccwpck_require__(62213);
980
1021
  const ensureGcloudProjectNumbers_1 = __nccwpck_require__(28897);
981
1022
  const setupProject = async (instance, onlyComponents) => {
@@ -995,16 +1036,24 @@ const setupProject = async (instance, onlyComponents) => {
995
1036
  allContext.forEach((context) => {
996
1037
  instance.log(` - ${context.name}:${context.env}`);
997
1038
  });
1039
+ const enabledPipelines = config ? (0, pipeline_1.getEnabledPipelineTypes)(config) : [];
998
1040
  await (0, logSection_1.logSection)(instance, "base setup", async () => {
999
- await (0, setupAccessTokens_1.setupAccessTokens)(instance);
1041
+ // gitlab-specific provisioning (access token, agent webhooks) —
1042
+ // meaningless (and failing) on a github-only project
1043
+ if (enabledPipelines.includes("gitlab")) {
1044
+ await (0, setupAccessTokens_1.setupAccessTokens)(instance);
1045
+ await (0, setupAgents_1.setupAgents)(instance);
1046
+ }
1000
1047
  await (0, setupTopic_1.setupTopic)(instance);
1001
- await (0, setupAgents_1.setupAgents)(instance);
1048
+ if (config) {
1049
+ await (0, setupGithub_1.setupGithub)(instance, config);
1050
+ }
1002
1051
  });
1003
1052
  for (const context of allContext) {
1004
1053
  await (0, setupContext_1.setupContext)(instance, context);
1005
1054
  }
1006
1055
  instance.log("");
1007
- instance.log("gitlab is ready! 🥂");
1056
+ instance.log(`${enabledPipelines.join(" + ") || "gitlab"} is ready! 🥂`);
1008
1057
  instance.log("\n");
1009
1058
  instance.log("do not forget to make sure that:");
1010
1059
  [
@@ -1370,6 +1419,105 @@ exports.setupContext = setupContext;
1370
1419
 
1371
1420
  /***/ }),
1372
1421
 
1422
+ /***/ 40148:
1423
+ /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
1424
+
1425
+ "use strict";
1426
+
1427
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1428
+ exports.setupGithub = void 0;
1429
+ const pipeline_1 = __nccwpck_require__(51082);
1430
+ const commandSecretsSyncGithub_1 = __nccwpck_require__(42462);
1431
+ const github_1 = __nccwpck_require__(26928);
1432
+ /**
1433
+ * configures github merge gating — the sane default gitlab ships
1434
+ * built-in and a fresh github repository lacks entirely: without it a
1435
+ * PR is mergeable the moment it opens, checks still running, and the
1436
+ * auto-merge button never appears.
1437
+ *
1438
+ * - repo settings: allow auto-merge, delete merged head branches
1439
+ * - branch protection on the default branch: require the generated
1440
+ * `catladder ✅` aggregate check (the one stable context — individual
1441
+ * job names change with every component add/rename)
1442
+ *
1443
+ * Deliberately non-destructive: existing protection settings
1444
+ * (enforce-admins, required reviews, restrictions, strictness) are
1445
+ * preserved; the aggregate context is merged into the required checks
1446
+ * rather than replacing them. Admins can still bypass per PR — this is
1447
+ * a default, not a cage.
1448
+ */
1449
+ const setupGithub = async (instance, config) => {
1450
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
1451
+ if (!(0, pipeline_1.getEnabledPipelineTypes)(config).includes("github")) {
1452
+ return;
1453
+ }
1454
+ if (!(await (0, github_1.isGhAuthenticated)())) {
1455
+ instance.log("⚠️ github cli (gh) not authenticated — skipping github merge-gating setup (run: gh auth login)");
1456
+ return;
1457
+ }
1458
+ const repo = await (0, commandSecretsSyncGithub_1.getConfiguredGithubRepo)();
1459
+ if (!repo) {
1460
+ instance.log(`⚠️ no github repository found on the '${(0, pipeline_1.getPipelineGitRemote)(config, "github")}' remote — skipping github merge-gating setup`);
1461
+ return;
1462
+ }
1463
+ const repoInfo = await (0, github_1.ghApiJson)("GET", `repos/${repo}`);
1464
+ if (!repoInfo.allow_auto_merge || !repoInfo.delete_branch_on_merge) {
1465
+ await (0, github_1.ghApiJson)("PATCH", `repos/${repo}`, {
1466
+ allow_auto_merge: true,
1467
+ delete_branch_on_merge: true,
1468
+ });
1469
+ instance.log("✅ auto-merge + delete-merged-branches enabled");
1470
+ }
1471
+ else {
1472
+ instance.log("✅ auto-merge already enabled");
1473
+ }
1474
+ const branch = repoInfo.default_branch;
1475
+ const protection = await (0, github_1.ghApiJson)("GET", `repos/${repo}/branches/${branch}/protection`).catch(() => null); // 404: branch not protected yet
1476
+ const existingChecks = (_b = (_a = protection === null || protection === void 0 ? void 0 : protection.required_status_checks) === null || _a === void 0 ? void 0 : _a.checks) !== null && _b !== void 0 ? _b : [];
1477
+ if (existingChecks.some((c) => c.context === pipeline_1.AGGREGATE_CHECK_JOB_NAME)) {
1478
+ instance.log(`✅ '${pipeline_1.AGGREGATE_CHECK_JOB_NAME}' already required on ${branch}`);
1479
+ return;
1480
+ }
1481
+ // merge into whatever protection exists; PUT replaces the whole rule,
1482
+ // so every preserved setting must be carried over explicitly
1483
+ await (0, github_1.ghApiJson)("PUT", `repos/${repo}/branches/${branch}/protection`, {
1484
+ required_status_checks: {
1485
+ strict: (_d = (_c = protection === null || protection === void 0 ? void 0 : protection.required_status_checks) === null || _c === void 0 ? void 0 : _c.strict) !== null && _d !== void 0 ? _d : false,
1486
+ checks: [
1487
+ ...existingChecks.map(({ context, app_id }) => ({
1488
+ context,
1489
+ ...(app_id !== undefined ? { app_id } : {}),
1490
+ })),
1491
+ { context: pipeline_1.AGGREGATE_CHECK_JOB_NAME },
1492
+ ],
1493
+ },
1494
+ enforce_admins: (_f = (_e = protection === null || protection === void 0 ? void 0 : protection.enforce_admins) === null || _e === void 0 ? void 0 : _e.enabled) !== null && _f !== void 0 ? _f : false,
1495
+ required_pull_request_reviews: (protection === null || protection === void 0 ? void 0 : protection.required_pull_request_reviews)
1496
+ ? {
1497
+ required_approving_review_count: (_g = protection.required_pull_request_reviews
1498
+ .required_approving_review_count) !== null && _g !== void 0 ? _g : 0,
1499
+ dismiss_stale_reviews: (_h = protection.required_pull_request_reviews.dismiss_stale_reviews) !== null && _h !== void 0 ? _h : false,
1500
+ require_code_owner_reviews: (_j = protection.required_pull_request_reviews
1501
+ .require_code_owner_reviews) !== null && _j !== void 0 ? _j : false,
1502
+ }
1503
+ : null,
1504
+ restrictions: (protection === null || protection === void 0 ? void 0 : protection.restrictions)
1505
+ ? {
1506
+ users: protection.restrictions.users.map((u) => u.login),
1507
+ teams: protection.restrictions.teams.map((t) => t.slug),
1508
+ apps: protection.restrictions.apps.map((a) => a.slug),
1509
+ }
1510
+ : null,
1511
+ allow_force_pushes: (_l = (_k = protection === null || protection === void 0 ? void 0 : protection.allow_force_pushes) === null || _k === void 0 ? void 0 : _k.enabled) !== null && _l !== void 0 ? _l : false,
1512
+ allow_deletions: (_o = (_m = protection === null || protection === void 0 ? void 0 : protection.allow_deletions) === null || _m === void 0 ? void 0 : _m.enabled) !== null && _o !== void 0 ? _o : false,
1513
+ });
1514
+ instance.log(`✅ branch protection on ${branch}: '${pipeline_1.AGGREGATE_CHECK_JOB_NAME}' required (merges now wait for the pipeline)`);
1515
+ };
1516
+ exports.setupGithub = setupGithub;
1517
+ //# sourceMappingURL=setupGithub.js.map
1518
+
1519
+ /***/ }),
1520
+
1373
1521
  /***/ 347:
1374
1522
  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
1375
1523
 
@@ -6374,7 +6522,7 @@ exports["default"] = async () => {
6374
6522
  "use strict";
6375
6523
 
6376
6524
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6377
- exports.ensureGithubEnvironment = exports.setGithubVariable = exports.setGithubSecret = exports.listGithubVariableNames = exports.listGithubSecretNames = exports.listGithubEnvironments = exports.getGithubRepoFromRemote = exports.isGhAuthenticated = void 0;
6525
+ exports.ghApiJson = exports.ensureGithubEnvironment = exports.setGithubVariable = exports.setGithubSecret = exports.listGithubVariableNames = exports.listGithubSecretNames = exports.listGithubEnvironments = exports.getGithubRepoFromRemote = exports.isGhAuthenticated = void 0;
6378
6526
  const child_process_1 = __nccwpck_require__(35317);
6379
6527
  const util_1 = __nccwpck_require__(39023);
6380
6528
  const execFile = (0, util_1.promisify)(child_process_1.execFile);
@@ -6485,6 +6633,29 @@ const ensureGithubEnvironment = async (repo, environment) => new Promise((resolv
6485
6633
  : reject(new Error(`creating github environment ${environment} failed: ${stderr.trim()}`)));
6486
6634
  });
6487
6635
  exports.ensureGithubEnvironment = ensureGithubEnvironment;
6636
+ /** runs `gh api` with an optional JSON body and returns the parsed response */
6637
+ const ghApiJson = async (method, path, body) => {
6638
+ var _a, _b, _c, _d;
6639
+ const args = ["api", "-X", method, path];
6640
+ const child = (0, child_process_1.spawn)("gh", [...args, ...(body ? ["--input", "-"] : [])], {
6641
+ stdio: [body ? "pipe" : "ignore", "pipe", "pipe"],
6642
+ });
6643
+ let stdout = "";
6644
+ let stderr = "";
6645
+ (_a = child.stdout) === null || _a === void 0 ? void 0 : _a.on("data", (data) => (stdout += data));
6646
+ (_b = child.stderr) === null || _b === void 0 ? void 0 : _b.on("data", (data) => (stderr += data));
6647
+ if (body) {
6648
+ (_c = child.stdin) === null || _c === void 0 ? void 0 : _c.write(JSON.stringify(body));
6649
+ (_d = child.stdin) === null || _d === void 0 ? void 0 : _d.end();
6650
+ }
6651
+ return new Promise((resolve, reject) => {
6652
+ child.on("error", reject);
6653
+ child.on("close", (code) => code === 0
6654
+ ? resolve(stdout ? JSON.parse(stdout) : undefined)
6655
+ : reject(new Error(`gh api ${method} ${path} failed: ${stderr.trim()}`)));
6656
+ });
6657
+ };
6658
+ exports.ghApiJson = ghApiJson;
6488
6659
  //# sourceMappingURL=github.js.map
6489
6660
 
6490
6661
  /***/ }),
@@ -8317,6 +8488,7 @@ const index_1 = __nccwpck_require__(68906);
8317
8488
  const createGithubJobs_1 = __nccwpck_require__(57877);
8318
8489
  const jobImagesPlan_1 = __nccwpck_require__(47864);
8319
8490
  const ensureImageJobs_1 = __nccwpck_require__(70051);
8491
+ const aggregateCheckJob_1 = __nccwpck_require__(88288);
8320
8492
  const shippedCatci_1 = __nccwpck_require__(79024);
8321
8493
  const githubReleaseJobs_1 = __nccwpck_require__(89800);
8322
8494
  const scriptFiles_1 = __nccwpck_require__(30966);
@@ -8533,11 +8705,21 @@ class GithubBackend {
8533
8705
  }
8534
8706
  }
8535
8707
  if (Object.keys(jobs).length > 0) {
8708
+ const workflowJobs = { ...(0, ensureImageJobs_1.makeEnsureImageGithubJobs)(images), ...jobs };
8536
8709
  workflows[`${GENERATED_FILE_PREFIX}${workflowFileName(trigger)}`] = {
8537
8710
  ...TRIGGER_WORKFLOWS[trigger],
8538
8711
  ...workflowPermissions(images),
8539
8712
  env: workflowEnv,
8540
- jobs: { ...(0, ensureImageJobs_1.makeEnsureImageGithubJobs)(images), ...jobs },
8713
+ // the review workflow additionally gets the aggregate job —
8714
+ // the one stable required-status context for branch
8715
+ // protection. Requiring real job names instead goes stale on
8716
+ // every component change: a renamed required job blocks its
8717
+ // own PR forever, a new component's jobs are silently not
8718
+ // required. Added at finalization so its needs cover the
8719
+ // image-build jobs too.
8720
+ jobs: trigger === "mr"
8721
+ ? { ...workflowJobs, ...(0, aggregateCheckJob_1.makeAggregateCheckJob)(workflowJobs) }
8722
+ : workflowJobs,
8541
8723
  };
8542
8724
  }
8543
8725
  }
@@ -8665,6 +8847,65 @@ const manualKind = (job) => job.stage === "stop"
8665
8847
 
8666
8848
  /***/ }),
8667
8849
 
8850
+ /***/ 88288:
8851
+ /***/ ((__unused_webpack_module, exports) => {
8852
+
8853
+ "use strict";
8854
+
8855
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
8856
+ exports.makeAggregateCheckJob = exports.AGGREGATE_CHECK_JOB_NAME = exports.AGGREGATE_CHECK_JOB_ID = void 0;
8857
+ exports.AGGREGATE_CHECK_JOB_ID = "catladder-ok";
8858
+ exports.AGGREGATE_CHECK_JOB_NAME = "catladder ✅";
8859
+ /**
8860
+ * one job that succeeds exactly when every other job of the review
8861
+ * workflow succeeded — the single, STABLE required-status context for
8862
+ * branch protection.
8863
+ *
8864
+ * Requiring the real job names instead goes stale on every component
8865
+ * change: a renamed required job never reports on the very PR that
8866
+ * renames it ("Expected — waiting for status", unmergeable), and a new
8867
+ * component's jobs are silently not required at all. This job's `needs`
8868
+ * are regenerated with the workflow, so protection stays correct with
8869
+ * a single one-time setup.
8870
+ *
8871
+ * Semantics:
8872
+ * - `if: always()` — the job must run (and fail) when an ancestor
8873
+ * failed; without it a failed need would leave it skipped, and a
8874
+ * skipped required check blocks the merge with no explanation.
8875
+ * - a skipped need counts as failure: review jobs are unconditional,
8876
+ * so skipped always means "an ancestor failed".
8877
+ * - `continue-on-error` jobs (security audit, changeset check) report
8878
+ * `success` to `needs` even when red, so they stay non-blocking here
8879
+ * by the same mechanism that keeps their workflow green.
8880
+ */
8881
+ const makeAggregateCheckJob = (reviewJobs) => ({
8882
+ [exports.AGGREGATE_CHECK_JOB_ID]: {
8883
+ name: exports.AGGREGATE_CHECK_JOB_NAME,
8884
+ "runs-on": "ubuntu-latest",
8885
+ needs: Object.keys(reviewJobs).sort(),
8886
+ if: "always()",
8887
+ steps: [
8888
+ {
8889
+ name: exports.AGGREGATE_CHECK_JOB_NAME,
8890
+ // the needs context only interpolates inside the workflow file,
8891
+ // so this script stays inline
8892
+ run: [
8893
+ `results='\${{ toJSON(needs) }}'`,
8894
+ `echo "$results"`,
8895
+ `if echo "$results" | grep -qE '"result": "(failure|cancelled|skipped)"'; then`,
8896
+ ` echo "a required job did not succeed"; exit 1`,
8897
+ `fi`,
8898
+ ].join("\n"),
8899
+ shell: "bash",
8900
+ },
8901
+ ],
8902
+ },
8903
+ });
8904
+ exports.makeAggregateCheckJob = makeAggregateCheckJob;
8905
+ //# sourceMappingURL=aggregateCheckJob.js.map
8906
+
8907
+ /***/ }),
8908
+
8668
8909
  /***/ 88393:
8669
8910
  /***/ ((__unused_webpack_module, exports) => {
8670
8911
 
@@ -9497,6 +9738,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
9497
9738
  __exportStar(__nccwpck_require__(85385), exports);
9498
9739
  __exportStar(__nccwpck_require__(88393), exports);
9499
9740
  __exportStar(__nccwpck_require__(30966), exports);
9741
+ __exportStar(__nccwpck_require__(88288), exports);
9500
9742
  //# sourceMappingURL=index.js.map
9501
9743
 
9502
9744
  /***/ }),
@@ -255,6 +255,18 @@ now-wrong `gitRemote`, regenerate once more, and finish with
255
255
 
256
256
  ## After the cut-over
257
257
 
258
+ - **Set up merge gating — GitHub has none by default.** On GitLab,
259
+ "merge when pipeline succeeds" is built in; on a fresh GitHub repo a
260
+ PR is mergeable the moment it opens, checks still running, and the
261
+ auto-merge button does not even appear. `yarn catladder project setup`
262
+ configures it: auto-merge + delete-merged-branches on the repo, and a
263
+ branch protection rule on the default branch requiring the generated
264
+ **`catladder ✅`** aggregate check (the one stable context — never
265
+ require individual job names, they change with every component
266
+ add/rename and a stale required name blocks its own PR forever).
267
+ `project doctor` verifies it. Two things stay human choices: "Do not
268
+ allow bypassing" (leave it off — generated CI means a generation bug
269
+ can only be fixed via the admin bypass) and required reviews.
258
270
  - Tell the team where the pipeline lives now and how manual actions
259
271
  work there (on GitHub, manual jobs are dispatch workflows in the
260
272
  Actions sidebar — `🚀 catladder create release`, `▶️ catladder deploy`,
@@ -10,6 +10,7 @@ const index_1 = require("../index");
10
10
  const createGithubJobs_1 = require("./createGithubJobs");
11
11
  const jobImagesPlan_1 = require("../../customImages/jobImagesPlan");
12
12
  const ensureImageJobs_1 = require("./ensureImageJobs");
13
+ const aggregateCheckJob_1 = require("./aggregateCheckJob");
13
14
  const shippedCatci_1 = require("../../catci/shippedCatci");
14
15
  const githubReleaseJobs_1 = require("./githubReleaseJobs");
15
16
  const scriptFiles_1 = require("./scriptFiles");
@@ -226,11 +227,21 @@ class GithubBackend {
226
227
  }
227
228
  }
228
229
  if (Object.keys(jobs).length > 0) {
230
+ const workflowJobs = { ...(0, ensureImageJobs_1.makeEnsureImageGithubJobs)(images), ...jobs };
229
231
  workflows[`${GENERATED_FILE_PREFIX}${workflowFileName(trigger)}`] = {
230
232
  ...TRIGGER_WORKFLOWS[trigger],
231
233
  ...workflowPermissions(images),
232
234
  env: workflowEnv,
233
- jobs: { ...(0, ensureImageJobs_1.makeEnsureImageGithubJobs)(images), ...jobs },
235
+ // the review workflow additionally gets the aggregate job —
236
+ // the one stable required-status context for branch
237
+ // protection. Requiring real job names instead goes stale on
238
+ // every component change: a renamed required job blocks its
239
+ // own PR forever, a new component's jobs are silently not
240
+ // required. Added at finalization so its needs cover the
241
+ // image-build jobs too.
242
+ jobs: trigger === "mr"
243
+ ? { ...workflowJobs, ...(0, aggregateCheckJob_1.makeAggregateCheckJob)(workflowJobs) }
244
+ : workflowJobs,
234
245
  };
235
246
  }
236
247
  }
@@ -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":"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"}
@@ -0,0 +1,26 @@
1
+ import type { GithubJob } from "../../types/github-types";
2
+ export declare const AGGREGATE_CHECK_JOB_ID = "catladder-ok";
3
+ export declare const AGGREGATE_CHECK_JOB_NAME = "catladder \u2705";
4
+ /**
5
+ * one job that succeeds exactly when every other job of the review
6
+ * workflow succeeded — the single, STABLE required-status context for
7
+ * branch protection.
8
+ *
9
+ * Requiring the real job names instead goes stale on every component
10
+ * change: a renamed required job never reports on the very PR that
11
+ * renames it ("Expected — waiting for status", unmergeable), and a new
12
+ * component's jobs are silently not required at all. This job's `needs`
13
+ * are regenerated with the workflow, so protection stays correct with
14
+ * a single one-time setup.
15
+ *
16
+ * Semantics:
17
+ * - `if: always()` — the job must run (and fail) when an ancestor
18
+ * failed; without it a failed need would leave it skipped, and a
19
+ * skipped required check blocks the merge with no explanation.
20
+ * - a skipped need counts as failure: review jobs are unconditional,
21
+ * so skipped always means "an ancestor failed".
22
+ * - `continue-on-error` jobs (security audit, changeset check) report
23
+ * `success` to `needs` even when red, so they stay non-blocking here
24
+ * by the same mechanism that keeps their workflow green.
25
+ */
26
+ export declare const makeAggregateCheckJob: (reviewJobs: Record<string, GithubJob>) => Record<string, GithubJob>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeAggregateCheckJob = exports.AGGREGATE_CHECK_JOB_NAME = exports.AGGREGATE_CHECK_JOB_ID = void 0;
4
+ exports.AGGREGATE_CHECK_JOB_ID = "catladder-ok";
5
+ exports.AGGREGATE_CHECK_JOB_NAME = "catladder ✅";
6
+ /**
7
+ * one job that succeeds exactly when every other job of the review
8
+ * workflow succeeded — the single, STABLE required-status context for
9
+ * branch protection.
10
+ *
11
+ * Requiring the real job names instead goes stale on every component
12
+ * change: a renamed required job never reports on the very PR that
13
+ * renames it ("Expected — waiting for status", unmergeable), and a new
14
+ * component's jobs are silently not required at all. This job's `needs`
15
+ * are regenerated with the workflow, so protection stays correct with
16
+ * a single one-time setup.
17
+ *
18
+ * Semantics:
19
+ * - `if: always()` — the job must run (and fail) when an ancestor
20
+ * failed; without it a failed need would leave it skipped, and a
21
+ * skipped required check blocks the merge with no explanation.
22
+ * - a skipped need counts as failure: review jobs are unconditional,
23
+ * so skipped always means "an ancestor failed".
24
+ * - `continue-on-error` jobs (security audit, changeset check) report
25
+ * `success` to `needs` even when red, so they stay non-blocking here
26
+ * by the same mechanism that keeps their workflow green.
27
+ */
28
+ const makeAggregateCheckJob = (reviewJobs) => ({
29
+ [exports.AGGREGATE_CHECK_JOB_ID]: {
30
+ name: exports.AGGREGATE_CHECK_JOB_NAME,
31
+ "runs-on": "ubuntu-latest",
32
+ needs: Object.keys(reviewJobs).sort(),
33
+ if: "always()",
34
+ steps: [
35
+ {
36
+ name: exports.AGGREGATE_CHECK_JOB_NAME,
37
+ // the needs context only interpolates inside the workflow file,
38
+ // so this script stays inline
39
+ run: [
40
+ `results='\${{ toJSON(needs) }}'`,
41
+ `echo "$results"`,
42
+ `if echo "$results" | grep -qE '"result": "(failure|cancelled|skipped)"'; then`,
43
+ ` echo "a required job did not succeed"; exit 1`,
44
+ `fi`,
45
+ ].join("\n"),
46
+ shell: "bash",
47
+ },
48
+ ],
49
+ },
50
+ });
51
+ exports.makeAggregateCheckJob = makeAggregateCheckJob;
52
+ //# sourceMappingURL=aggregateCheckJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregateCheckJob.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/aggregateCheckJob.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAG,cAAc,CAAC;AACxC,QAAA,wBAAwB,GAAG,aAAa,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,MAAM,qBAAqB,GAAG,CACnC,UAAqC,EACV,EAAE,CAAC,CAAC;IAC/B,CAAC,8BAAsB,CAAC,EAAE;QACxB,IAAI,EAAE,gCAAwB;QAC9B,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;QACrC,EAAE,EAAE,UAAU;QACd,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,gCAAwB;gBAC9B,gEAAgE;gBAChE,8BAA8B;gBAC9B,GAAG,EAAE;oBACH,iCAAiC;oBACjC,iBAAiB;oBACjB,+EAA+E;oBAC/E,iDAAiD;oBACjD,IAAI;iBACL,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,MAAM;aACd;SACF;KACF;CACF,CAAC,CAAC;AAxBU,QAAA,qBAAqB,yBAwB/B"}
@@ -1,3 +1,4 @@
1
1
  export * from "./GithubBackend";
2
2
  export * from "./ciVariables";
3
3
  export * from "./scriptFiles";
4
+ export * from "./aggregateCheckJob";
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./GithubBackend"), exports);
18
18
  __exportStar(require("./ciVariables"), exports);
19
19
  __exportStar(require("./scriptFiles"), exports);
20
+ __exportStar(require("./aggregateCheckJob"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,gDAA8B;AAC9B,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,gDAA8B;AAC9B,gDAA8B;AAC9B,sDAAoC"}
@@ -255,6 +255,18 @@ now-wrong `gitRemote`, regenerate once more, and finish with
255
255
 
256
256
  ## After the cut-over
257
257
 
258
+ - **Set up merge gating — GitHub has none by default.** On GitLab,
259
+ "merge when pipeline succeeds" is built in; on a fresh GitHub repo a
260
+ PR is mergeable the moment it opens, checks still running, and the
261
+ auto-merge button does not even appear. `yarn catladder project setup`
262
+ configures it: auto-merge + delete-merged-branches on the repo, and a
263
+ branch protection rule on the default branch requiring the generated
264
+ **`catladder ✅`** aggregate check (the one stable context — never
265
+ require individual job names, they change with every component
266
+ add/rename and a stale required name blocks its own PR forever).
267
+ `project doctor` verifies it. Two things stay human choices: "Do not
268
+ allow bypassing" (leave it off — generated CI means a generation bug
269
+ can only be fixed via the admin bypass) and required reviews.
258
270
  - Tell the team where the pipeline lives now and how manual actions
259
271
  work there (on GitHub, manual jobs are dispatch workflows in the
260
272
  Actions sidebar — `🚀 catladder create release`, `▶️ catladder deploy`,