@catladder/cli 5.5.0 → 5.7.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 (109) hide show
  1. package/dist/apps/cli/src/catci.js +22 -0
  2. package/dist/apps/cli/src/catci.js.map +1 -1
  3. package/dist/apps/cli/src/commands/index.d.ts +1 -0
  4. package/dist/apps/cli/src/commands/index.js +4 -1
  5. package/dist/apps/cli/src/commands/index.js.map +1 -1
  6. package/dist/apps/cli/src/commands/project/commandMrPin.d.ts +9 -0
  7. package/dist/apps/cli/src/commands/project/commandMrPin.js +11 -13
  8. package/dist/apps/cli/src/commands/project/commandMrPin.js.map +1 -1
  9. package/dist/apps/cli/src/commands/project/commandMrReviewApp.d.ts +21 -0
  10. package/dist/apps/cli/src/commands/project/commandMrReviewApp.js +102 -0
  11. package/dist/apps/cli/src/commands/project/commandMrReviewApp.js.map +1 -0
  12. package/dist/apps/cli/src/reviewApps/github.d.ts +10 -0
  13. package/dist/apps/cli/src/reviewApps/github.js +196 -0
  14. package/dist/apps/cli/src/reviewApps/github.js.map +1 -0
  15. package/dist/bundles/catci/index.js +4 -4
  16. package/dist/bundles/catenv/index.js +1261 -70
  17. package/dist/bundles/catenv/xdg-open +0 -0
  18. package/dist/bundles/cli/clipboard_i686.exe +0 -0
  19. package/dist/bundles/cli/clipboard_x86_64.exe +0 -0
  20. package/dist/bundles/cli/index.js +1387 -86
  21. package/dist/bundles/cli/xdg-open +0 -0
  22. package/dist/bundles/cli/xsel +0 -0
  23. package/dist/bundles/runner-images/changesets/scripts/changesetsRelease +0 -0
  24. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesCreateSecret +0 -0
  25. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesDelete +0 -0
  26. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesDeploy +0 -0
  27. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesRollback +0 -0
  28. package/dist/bundles/skills/catladder-builds/SKILL.md +50 -2
  29. package/dist/bundles/skills/catladder-builds/references/build-types.md +10 -2
  30. package/dist/bundles/skills/catladder-cli/references/commands.md +13 -0
  31. package/dist/bundles/skills/catladder-config/SKILL.md +4 -0
  32. package/dist/bundles/skills/catladder-deploys/SKILL.md +6 -0
  33. package/dist/bundles/skills/catladder-pipelines/SKILL.md +97 -3
  34. package/dist/packages/pipeline/src/backends/github/GithubBackend.js +60 -3
  35. package/dist/packages/pipeline/src/backends/github/GithubBackend.js.map +1 -1
  36. package/dist/packages/pipeline/src/backends/github/aggregateCheckJob.d.ts +1 -1
  37. package/dist/packages/pipeline/src/backends/github/aggregateCheckJob.js +22 -8
  38. package/dist/packages/pipeline/src/backends/github/aggregateCheckJob.js.map +1 -1
  39. package/dist/packages/pipeline/src/backends/github/artifactArchive.d.ts +22 -0
  40. package/dist/packages/pipeline/src/backends/github/artifactArchive.js +84 -0
  41. package/dist/packages/pipeline/src/backends/github/artifactArchive.js.map +1 -0
  42. package/dist/packages/pipeline/src/backends/github/createGithubJobs.js +12 -29
  43. package/dist/packages/pipeline/src/backends/github/createGithubJobs.js.map +1 -1
  44. package/dist/packages/pipeline/src/backends/github/reviewDeployWorkflow.d.ts +128 -0
  45. package/dist/packages/pipeline/src/backends/github/reviewDeployWorkflow.js +510 -0
  46. package/dist/packages/pipeline/src/backends/github/reviewDeployWorkflow.js.map +1 -0
  47. package/dist/packages/pipeline/src/backends/gitlab/GitlabBackend.js +32 -5
  48. package/dist/packages/pipeline/src/backends/gitlab/GitlabBackend.js.map +1 -1
  49. package/dist/packages/pipeline/src/backends/gitlab/createGitlabPipeline.d.ts +11 -1
  50. package/dist/packages/pipeline/src/backends/gitlab/createGitlabPipeline.js +17 -5
  51. package/dist/packages/pipeline/src/backends/gitlab/createGitlabPipeline.js.map +1 -1
  52. package/dist/packages/pipeline/src/backends/gitlab/getPipelineStages.d.ts +4 -1
  53. package/dist/packages/pipeline/src/backends/gitlab/getPipelineStages.js +11 -2
  54. package/dist/packages/pipeline/src/backends/gitlab/getPipelineStages.js.map +1 -1
  55. package/dist/packages/pipeline/src/backends/gitlab/reviewDeployGate.d.ts +26 -0
  56. package/dist/packages/pipeline/src/backends/gitlab/reviewDeployGate.js +94 -0
  57. package/dist/packages/pipeline/src/backends/gitlab/reviewDeployGate.js.map +1 -0
  58. package/dist/packages/pipeline/src/build/types.d.ts +4 -3
  59. package/dist/packages/pipeline/src/build/types.js.map +1 -1
  60. package/dist/packages/pipeline/src/deploy/base/deploy.js +25 -12
  61. package/dist/packages/pipeline/src/deploy/base/deploy.js.map +1 -1
  62. package/dist/packages/pipeline/src/index.d.ts +2 -0
  63. package/dist/packages/pipeline/src/index.js +2 -0
  64. package/dist/packages/pipeline/src/index.js.map +1 -1
  65. package/dist/packages/pipeline/src/pipeline/createJobsForComponent.js +12 -2
  66. package/dist/packages/pipeline/src/pipeline/createJobsForComponent.js.map +1 -1
  67. package/dist/packages/pipeline/src/pipeline/createJobsForWorkspace.js +7 -2
  68. package/dist/packages/pipeline/src/pipeline/createJobsForWorkspace.js.map +1 -1
  69. package/dist/packages/pipeline/src/pipeline/resolveRequirements.d.ts +2 -0
  70. package/dist/packages/pipeline/src/pipeline/resolveRequirements.js +4 -2
  71. package/dist/packages/pipeline/src/pipeline/resolveRequirements.js.map +1 -1
  72. package/dist/packages/pipeline/src/postBuildTest/createPostBuildTestJobs.d.ts +16 -0
  73. package/dist/packages/pipeline/src/postBuildTest/createPostBuildTestJobs.js +167 -0
  74. package/dist/packages/pipeline/src/postBuildTest/createPostBuildTestJobs.js.map +1 -0
  75. package/dist/packages/pipeline/src/postBuildTest/index.d.ts +2 -0
  76. package/dist/packages/pipeline/src/postBuildTest/index.js +19 -0
  77. package/dist/packages/pipeline/src/postBuildTest/index.js.map +1 -0
  78. package/dist/packages/pipeline/src/postBuildTest/types.d.ts +61 -0
  79. package/dist/packages/pipeline/src/postBuildTest/types.js +3 -0
  80. package/dist/packages/pipeline/src/postBuildTest/types.js.map +1 -0
  81. package/dist/packages/pipeline/src/reviewApps.d.ts +38 -0
  82. package/dist/packages/pipeline/src/reviewApps.js +86 -0
  83. package/dist/packages/pipeline/src/reviewApps.js.map +1 -0
  84. package/dist/packages/pipeline/src/reviewAppsPolicy.d.ts +46 -0
  85. package/dist/packages/pipeline/src/reviewAppsPolicy.js +37 -0
  86. package/dist/packages/pipeline/src/reviewAppsPolicy.js.map +1 -0
  87. package/dist/packages/pipeline/src/types/config.d.ts +55 -0
  88. package/dist/packages/pipeline/src/types/config.js.map +1 -1
  89. package/dist/packages/pipeline/src/types/jobs.d.ts +2 -2
  90. package/dist/packages/pipeline/src/types/jobs.js +1 -0
  91. package/dist/packages/pipeline/src/types/jobs.js.map +1 -1
  92. package/dist/runner-images/changesets/scripts/changesetsRelease +0 -0
  93. package/dist/runner-images/kubernetes/scripts/kubernetesCreateSecret +0 -0
  94. package/dist/runner-images/kubernetes/scripts/kubernetesDelete +0 -0
  95. package/dist/runner-images/kubernetes/scripts/kubernetesDeploy +0 -0
  96. package/dist/runner-images/kubernetes/scripts/kubernetesRollback +0 -0
  97. package/dist/skills/catladder-builds/SKILL.md +50 -2
  98. package/dist/skills/catladder-builds/references/build-types.md +10 -2
  99. package/dist/skills/catladder-cli/references/commands.md +13 -0
  100. package/dist/skills/catladder-config/SKILL.md +4 -0
  101. package/dist/skills/catladder-deploys/SKILL.md +6 -0
  102. package/dist/skills/catladder-pipelines/SKILL.md +97 -3
  103. package/dist/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +1 -1
  105. package/src/catci.ts +29 -0
  106. package/src/commands/index.ts +4 -0
  107. package/src/commands/project/commandMrPin.ts +15 -14
  108. package/src/commands/project/commandMrReviewApp.ts +143 -0
  109. package/src/reviewApps/github.ts +253 -0
@@ -0,0 +1,510 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withDraftsSkipped = exports.withReviewStopSwitch = exports.makeReviewDeployTriggerJob = exports.makeReviewAppAggregateJob = exports.REVIEW_APP_STATUS_CONTEXT = exports.REVIEW_APP_AGGREGATE_JOB_NAME = exports.REVIEW_APP_AGGREGATE_JOB_ID = exports.makeReviewDeployWorkflow = exports.getGatedReviewDeliveryJobIds = exports.withInRunCondition = exports.getInRunDeployCondition = exports.REVIEW_DEPLOY_WORKFLOW_FILE = void 0;
4
+ const shippedCatci_1 = require("../../catci/shippedCatci");
5
+ const resolveRequirements_1 = require("../../pipeline/resolveRequirements");
6
+ const reviewApps_1 = require("../../reviewApps");
7
+ const aggregateCheckJob_1 = require("./aggregateCheckJob");
8
+ const ensureImageJobs_1 = require("./ensureImageJobs");
9
+ const CATCI = `${shippedCatci_1.GENERATED_CATCI_FOLDER}/index.js`;
10
+ /**
11
+ * the generated review deploy workflow. Keep in sync with
12
+ * GITHUB_REVIEW_DEPLOY_WORKFLOW in apps/cli/src/reviewApps/github.ts.
13
+ */
14
+ exports.REVIEW_DEPLOY_WORKFLOW_FILE = "catladder-deploy-review.yml";
15
+ const GUARD_JOB_ID = "catladder-review-deploy-guard";
16
+ const TRIGGER_JOB_ID = "catladder-review-deploy-trigger";
17
+ /** the PR of the run — from the event, or the dispatch input */
18
+ const PR_NUMBER_EXPRESSION = "github.event.number || inputs.pr";
19
+ /** quote a value for a github expression string literal */
20
+ const literal = (value) => `'${value.replaceAll("'", "''")}'`;
21
+ /** combine a job's existing `if` with another condition */
22
+ const andIf = (existing, condition) => {
23
+ if (!existing) {
24
+ return `\${{ ${condition} }}`;
25
+ }
26
+ const unwrapped = existing.replace(/^\$\{\{\s*([\s\S]*?)\s*\}\}$/, "$1");
27
+ return `\${{ (${unwrapped}) && (${condition}) }}`;
28
+ };
29
+ /**
30
+ * the condition under which the review workflow deploys the review apps
31
+ * ITSELF, decided from the pull request event at the start of the run
32
+ * (labels, draft) — the common case then needs one run and one app
33
+ * build, like gitlab's switch job. Whatever changes later (a label set
34
+ * during or after the run, a draft marked ready, an explicit request) is
35
+ * handled by the review deploy workflow. `deploy: "manual"` never
36
+ * deploys on its own: undefined.
37
+ */
38
+ const getInRunDeployCondition = (reviewApps) => {
39
+ const labels = "github.event.pull_request.labels.*.name";
40
+ const policy = reviewApps.deploy === "optIn"
41
+ ? `contains(${labels}, ${literal(reviewApps.label)})`
42
+ : reviewApps.deploy === "optOut"
43
+ ? `!contains(${labels}, ${literal(reviewApps.skipLabel)})`
44
+ : reviewApps.deploy === "auto"
45
+ ? undefined
46
+ : null;
47
+ if (policy === null) {
48
+ return undefined;
49
+ }
50
+ const notDraft = reviewApps.drafts !== "likeReady"
51
+ ? "!github.event.pull_request.draft"
52
+ : undefined;
53
+ return [policy, notDraft].filter(Boolean).join(" && ") || "true";
54
+ };
55
+ exports.getInRunDeployCondition = getInRunDeployCondition;
56
+ /** combine a job's `if` with the in-run deploy condition */
57
+ const withInRunCondition = (job, condition) => ({
58
+ ...job,
59
+ if: andIf(job.if, condition),
60
+ });
61
+ exports.withInRunCondition = withInRunCondition;
62
+ /**
63
+ * the review delivery jobs (docker → deploy → verify) that move out of
64
+ * the review workflow into the review deploy workflow:
65
+ * - all of them when the reviewApps config gates review deploys
66
+ * - otherwise those of components whose review deploy is manual
67
+ * (`deploy.when: "manual"`) — github has no manual jobs inside a run,
68
+ * and the generic manual-task dispatch can't carry the pull request
69
+ */
70
+ const getGatedReviewDeliveryJobIds = (triggerJobs, reviewApps) => {
71
+ var _a;
72
+ const gatedByConfig = (0, reviewApps_1.isReviewDeployGated)(reviewApps);
73
+ const manualComponents = new Set([...triggerJobs.values()]
74
+ .filter(({ job, context }) => (0, reviewApps_1.isReviewDeliveryJob)(context, job) &&
75
+ job.stage === "deploy" &&
76
+ job.gate === "manual")
77
+ .map(({ context }) => context.name));
78
+ const ids = new Set([...triggerJobs]
79
+ .filter(([, { job, context }]) => (0, reviewApps_1.isReviewDeliveryJob)(context, job) &&
80
+ (gatedByConfig || manualComponents.has(context.name)))
81
+ .map(([id]) => id));
82
+ // jobs depending on a moved job (e.g. a custom e2e job waiting for a
83
+ // review deploy) can't stay behind: they move along
84
+ let grown = ids.size > 0;
85
+ while (grown) {
86
+ grown = false;
87
+ for (const [id, { githubJob }] of triggerJobs) {
88
+ if (!ids.has(id) && ((_a = githubJob.needs) === null || _a === void 0 ? void 0 : _a.some((need) => ids.has(need)))) {
89
+ ids.add(id);
90
+ grown = true;
91
+ }
92
+ }
93
+ }
94
+ return [...ids];
95
+ };
96
+ exports.getGatedReviewDeliveryJobIds = getGatedReviewDeliveryJobIds;
97
+ /**
98
+ * the review deploy workflow (`▶️ catladder deploy review`): the review
99
+ * delivery chains of a pull request, behind a guard that decides
100
+ * whether this run deploys (see `catci review-app github-guard`).
101
+ *
102
+ * Started by
103
+ * - the review workflow, once it is green and the label/draft policy
104
+ * says the PR deploys (`source: ci`)
105
+ * - switching the label on (opt-in: adding it, opt-out: removing the
106
+ * skip label) or marking a draft ready (`drafts: "checksOnly"`)
107
+ * - a human or agent dispatching it with the PR number — explicit
108
+ * requests always deploy, provided the PR's CI is green
109
+ *
110
+ * Artifacts are scoped to a single run, so the run rebuilds what the
111
+ * chains need (the app build); tests are not rerun — the guard checks
112
+ * the PR's `catladder ✅` instead.
113
+ */
114
+ const makeReviewDeployWorkflow = ({ deliveryIds, triggerJobs, reviewApps, images, workflowEnv, permissions, }) => {
115
+ var _a, _b;
116
+ const delivery = new Set(deliveryIds);
117
+ const isQualityJob = (id) => {
118
+ const entry = triggerJobs.get(id);
119
+ return !!entry && (0, resolveRequirements_1.providesCapability)(entry.job, "qualityGate");
120
+ };
121
+ // the delivery jobs plus everything upstream they need from the
122
+ // trigger (rebuilt in this run), except the quality jobs
123
+ const included = new Set();
124
+ const stack = [...deliveryIds];
125
+ let current;
126
+ while ((current = stack.pop()) !== undefined) {
127
+ if (included.has(current))
128
+ continue;
129
+ included.add(current);
130
+ for (const need of (_b = (_a = triggerJobs.get(current)) === null || _a === void 0 ? void 0 : _a.githubJob.needs) !== null && _b !== void 0 ? _b : []) {
131
+ if (triggerJobs.has(need) && !isQualityJob(need))
132
+ stack.push(need);
133
+ }
134
+ }
135
+ // the guard runs first, every other job only when it says deploy
136
+ const gatedJob = (job) => {
137
+ var _a;
138
+ return ({
139
+ ...job,
140
+ needs: [GUARD_JOB_ID, ...((_a = job.needs) !== null && _a !== void 0 ? _a : [])],
141
+ if: andIf(job.if, `needs.${GUARD_JOB_ID}.outputs.deploy == 'true'`),
142
+ });
143
+ };
144
+ const checkoutPrHead = (step) => {
145
+ var _a;
146
+ return ((_a = step.uses) === null || _a === void 0 ? void 0 : _a.startsWith("actions/checkout@"))
147
+ ? {
148
+ ...step,
149
+ // the PR head — a label event's default is the merge ref
150
+ with: {
151
+ ...step.with,
152
+ ref: "${{ github.event.pull_request.head.sha || github.sha }}",
153
+ },
154
+ }
155
+ : step;
156
+ };
157
+ const chainJobs = Object.fromEntries([...included].sort().map((id) => {
158
+ const { githubJob } = triggerJobs.get(id);
159
+ return [
160
+ id,
161
+ gatedJob({
162
+ ...githubJob,
163
+ // the quality jobs stay in the review workflow — the guard
164
+ // checks their aggregate instead
165
+ ...(githubJob.needs
166
+ ? {
167
+ needs: githubJob.needs.filter((need) => !isQualityJob(need) || delivery.has(need)),
168
+ }
169
+ : {}),
170
+ steps: githubJob.steps.map(checkoutPrHead),
171
+ }),
172
+ ];
173
+ }));
174
+ // only the images the chains run in (not e.g. the release image)
175
+ const neededIds = new Set(Object.values(chainJobs).flatMap((job) => { var _a; return (_a = job.needs) !== null && _a !== void 0 ? _a : []; }));
176
+ const imageJobs = Object.fromEntries(Object.entries((0, ensureImageJobs_1.makeEnsureImageGithubJobs)(images))
177
+ .filter(([id]) => neededIds.has(id))
178
+ .map(([id, job]) => [id, gatedJob(job)]));
179
+ const switchLabel = (0, reviewApps_1.getReviewAppsSwitchLabel)(reviewApps);
180
+ const pullRequestTypes = [
181
+ ...(switchLabel ? [switchLabel.deployOn] : []),
182
+ ...(reviewApps.drafts === "checksOnly" ? ["ready_for_review"] : []),
183
+ ];
184
+ // pull request events that concern the review apps — other label
185
+ // changes must neither run the guard nor cancel a running deploy
186
+ const relevantEvent = [
187
+ "github.event_name == 'workflow_dispatch'",
188
+ ...(switchLabel
189
+ ? [
190
+ `(github.event.action == ${literal(switchLabel.deployOn)} && github.event.label.name == ${literal(switchLabel.label)})`,
191
+ ]
192
+ : []),
193
+ ...(reviewApps.drafts === "checksOnly"
194
+ ? ["github.event.action == 'ready_for_review'"]
195
+ : []),
196
+ ].join(" || ");
197
+ return {
198
+ name: "▶️ catladder deploy review",
199
+ on: {
200
+ workflow_dispatch: {
201
+ inputs: {
202
+ pr: {
203
+ description: "number of the pull request whose review apps to deploy",
204
+ required: true,
205
+ type: "string",
206
+ },
207
+ source: {
208
+ description: "who requests the deploy: manual (always deploys) or ci (applies the label/draft policy)",
209
+ required: false,
210
+ type: "choice",
211
+ options: ["manual", "ci"],
212
+ default: "manual",
213
+ },
214
+ },
215
+ },
216
+ ...(pullRequestTypes.length > 0
217
+ ? { pull_request: { types: pullRequestTypes } }
218
+ : {}),
219
+ },
220
+ concurrency: reviewDeployConcurrency(relevantEvent),
221
+ permissions,
222
+ env: { ...workflowEnv, CL_PR_NUMBER: `\${{ ${PR_NUMBER_EXPRESSION} }}` },
223
+ jobs: {
224
+ [GUARD_JOB_ID]: {
225
+ name: "🚦 review deploy guard",
226
+ "runs-on": "ubuntu-latest",
227
+ ...(pullRequestTypes.length > 0
228
+ ? { if: `\${{ ${relevantEvent} }}` }
229
+ : {}),
230
+ permissions: {
231
+ contents: "read",
232
+ "pull-requests": "read",
233
+ checks: "read",
234
+ statuses: "write",
235
+ },
236
+ env: {
237
+ GITHUB_TOKEN: "${{ github.token }}",
238
+ CL_REVIEW_APPS: JSON.stringify(reviewApps),
239
+ CL_DEPLOY_SOURCE: "${{ github.event_name == 'workflow_dispatch' && (inputs.source || 'manual') || 'label' }}",
240
+ CL_HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}",
241
+ },
242
+ outputs: { deploy: "${{ steps.main.outputs.deploy }}" },
243
+ steps: [
244
+ catciCheckout(),
245
+ {
246
+ name: "🚦 review deploy guard",
247
+ id: "main",
248
+ run: `node ${CATCI} review-app github-guard`,
249
+ shell: "bash",
250
+ },
251
+ {
252
+ // the pull request shows the deploy in flight
253
+ name: "report pending review app",
254
+ if: "${{ steps.main.outputs.deploy == 'true' }}",
255
+ env: { GH_TOKEN: "${{ github.token }}" },
256
+ run: `gh api "repos/$GITHUB_REPOSITORY/statuses/$CL_HEAD_SHA" -f state=pending -f context="${exports.REVIEW_APP_STATUS_CONTEXT}" -f description="deploying the review apps" -f target_url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" > /dev/null`,
257
+ shell: "bash",
258
+ },
259
+ ],
260
+ },
261
+ ...imageJobs,
262
+ ...chainJobs,
263
+ ...(0, exports.makeReviewAppAggregateJob)([GUARD_JOB_ID, ...Object.keys(imageJobs), ...Object.keys(chainJobs)], `needs.${GUARD_JOB_ID}.outputs.deploy == 'true'`),
264
+ },
265
+ };
266
+ };
267
+ exports.makeReviewDeployWorkflow = makeReviewDeployWorkflow;
268
+ exports.REVIEW_APP_AGGREGATE_JOB_ID = "catladder-review-app-ok";
269
+ exports.REVIEW_APP_AGGREGATE_JOB_NAME = "catladder review app ✅";
270
+ /** the commit status context the aggregate job reports */
271
+ exports.REVIEW_APP_STATUS_CONTEXT = "catladder review app";
272
+ /**
273
+ * one job with a STABLE name that succeeds exactly when the review apps
274
+ * of this run deployed and verified — the result a merge gate (a bot,
275
+ * or a branch rule for projects that deploy every PR) waits for,
276
+ * regardless of the project's components.
277
+ *
278
+ * It also reports a commit status on the PR head: runs started by a
279
+ * dispatch (the trigger job, or by hand) are attached to the commit but
280
+ * not shown on the pull request, a commit status always is.
281
+ *
282
+ * Runs only when the run deploys (the guard decided so, or the review
283
+ * workflow's start condition held) — a run that doesn't deploy says
284
+ * nothing about the review app (its check is skipped, the commit status
285
+ * untouched). Neither does a cancelled run (superseded by a newer
286
+ * deploy, or stopped): a gate keeps waiting instead of seeing red.
287
+ */
288
+ const makeReviewAppAggregateJob = (needs,
289
+ /** when the run deploys the review apps (a github expression) */
290
+ deploysWhen) => ({
291
+ [exports.REVIEW_APP_AGGREGATE_JOB_ID]: {
292
+ name: exports.REVIEW_APP_AGGREGATE_JOB_NAME,
293
+ "runs-on": "ubuntu-latest",
294
+ needs: [...needs].sort(),
295
+ if: `\${{ always() && (${deploysWhen}) }}`,
296
+ permissions: { statuses: "write" },
297
+ env: {
298
+ GH_TOKEN: "${{ github.token }}",
299
+ HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}",
300
+ RUN_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}",
301
+ },
302
+ steps: [
303
+ {
304
+ name: exports.REVIEW_APP_AGGREGATE_JOB_NAME,
305
+ // the needs context only interpolates inside the workflow file,
306
+ // so this script stays inline
307
+ run: [
308
+ `results='\${{ toJSON(needs) }}'`,
309
+ `echo "$results"`,
310
+ `if echo "$results" | grep -qE '"result": "failure"'; then`,
311
+ ` state=failure; description="the review apps did not deploy and verify"`,
312
+ `elif echo "$results" | grep -qE '"result": "cancelled"'; then`,
313
+ ` # superseded by a newer deploy, or stopped: no result, not red`,
314
+ ` echo "cancelled — no review app result reported"; exit 0`,
315
+ `elif echo "$results" | grep -qE '"result": "skipped"'; then`,
316
+ ` state=failure; description="the review apps did not deploy and verify"`,
317
+ `else`,
318
+ ` state=success; description="review apps deployed and verified"`,
319
+ `fi`,
320
+ `gh api "repos/$GITHUB_REPOSITORY/statuses/$HEAD_SHA" -f state="$state" -f context="${exports.REVIEW_APP_STATUS_CONTEXT}" -f description="$description" -f target_url="$RUN_URL" > /dev/null`,
321
+ `echo "$description"`,
322
+ `[ "$state" = success ]`,
323
+ ].join("\n"),
324
+ shell: "bash",
325
+ },
326
+ ],
327
+ },
328
+ });
329
+ exports.makeReviewAppAggregateJob = makeReviewAppAggregateJob;
330
+ /** a checkout of just the materialized catci */
331
+ const catciCheckout = () => ({
332
+ name: "Checkout",
333
+ uses: "actions/checkout@v4",
334
+ with: { "sparse-checkout": shippedCatci_1.GENERATED_CATCI_FOLDER },
335
+ });
336
+ /**
337
+ * one deploy/stop of a PR's review apps at a time, the newest wins —
338
+ * shared by the deploy and the stop workflow, so closing a PR or
339
+ * switching the label off cancels a deploy in flight before tearing
340
+ * down. Events that don't concern the review apps get a group of
341
+ * their own, so they never cancel anything.
342
+ */
343
+ const reviewDeployConcurrency = (relevantEvent) => ({
344
+ group: `catladder-review-deploy-\${{ ${PR_NUMBER_EXPRESSION} }}\${{ !(${relevantEvent}) && format('-ignored-{0}', github.run_id) || '' }}`,
345
+ "cancel-in-progress": true,
346
+ });
347
+ /**
348
+ * the last job of the review workflow: once it is green, dispatch the
349
+ * review deploy workflow when the label/draft policy says this PR
350
+ * deploys (read fresh from the PR, so a label set while CI ran counts).
351
+ * Only for policies that deploy on their own — `deploy: "manual"` waits
352
+ * for an explicit dispatch.
353
+ */
354
+ const makeReviewDeployTriggerJob = (reviewApps,
355
+ /** the review workflow deployed itself when this held at its start */
356
+ inRunCondition) => reviewApps.deploy === "manual"
357
+ ? {}
358
+ : {
359
+ [TRIGGER_JOB_ID]: {
360
+ name: "▶️ trigger review deploy",
361
+ "runs-on": "ubuntu-latest",
362
+ needs: [aggregateCheckJob_1.AGGREGATE_CHECK_JOB_ID],
363
+ ...(inRunCondition
364
+ ? {
365
+ // NOT success(): it also checks the transitive needs,
366
+ // and the chains this run skipped on purpose would make
367
+ // it false — exactly when the trigger is needed
368
+ if: `\${{ !cancelled() && needs.${aggregateCheckJob_1.AGGREGATE_CHECK_JOB_ID}.result == 'success' && !(${inRunCondition}) }}`,
369
+ }
370
+ : {}),
371
+ permissions: {
372
+ contents: "read",
373
+ "pull-requests": "read",
374
+ actions: "write",
375
+ },
376
+ env: {
377
+ GITHUB_TOKEN: "${{ github.token }}",
378
+ CL_REVIEW_APPS: JSON.stringify(reviewApps),
379
+ CL_HEAD_REF: "${{ github.head_ref }}",
380
+ CL_HEAD_SHA: "${{ github.event.pull_request.head.sha }}",
381
+ },
382
+ steps: [
383
+ catciCheckout(),
384
+ {
385
+ name: "▶️ trigger review deploy",
386
+ run: `node ${CATCI} review-app github-trigger`,
387
+ shell: "bash",
388
+ },
389
+ ],
390
+ },
391
+ };
392
+ exports.makeReviewDeployTriggerJob = makeReviewDeployTriggerJob;
393
+ /**
394
+ * the review stop workflow under a label policy: switching the label
395
+ * off (opt-in: removing it, opt-out: adding the skip label) stops the
396
+ * review apps, like closing the PR does. It shares the deploy
397
+ * workflow's concurrency group, so a deploy in flight is cancelled
398
+ * first.
399
+ */
400
+ const withReviewStopSwitch = (workflow, reviewApps,
401
+ /** the review workflow deploys itself (see getInRunDeployCondition) */
402
+ reviewRunDeploys = false) => {
403
+ const switchLabel = (0, reviewApps_1.getReviewAppsSwitchLabel)(reviewApps);
404
+ const relevantEvent = [
405
+ "github.event_name == 'workflow_dispatch'",
406
+ "github.event.action == 'closed'",
407
+ ...(switchLabel
408
+ ? [
409
+ `(github.event.action == ${literal(switchLabel.stopOn)} && github.event.label.name == ${literal(switchLabel.label)})`,
410
+ ]
411
+ : []),
412
+ ].join(" || ");
413
+ return {
414
+ ...workflow,
415
+ on: {
416
+ ...workflow.on,
417
+ pull_request: {
418
+ types: ["closed", ...(switchLabel ? [switchLabel.stopOn] : [])],
419
+ },
420
+ },
421
+ concurrency: reviewDeployConcurrency(relevantEvent),
422
+ jobs: Object.fromEntries(Object.entries({
423
+ ...(reviewRunDeploys ? makeCancelReviewRunsJob() : {}),
424
+ ...Object.fromEntries(Object.entries(workflow.jobs).map(([id, job]) => {
425
+ var _a;
426
+ return [
427
+ id,
428
+ // the teardown waits until no review run deploys anymore
429
+ reviewRunDeploys && !id.startsWith("catladder-image-")
430
+ ? {
431
+ ...job,
432
+ needs: [CANCEL_REVIEW_RUNS_JOB_ID, ...((_a = job.needs) !== null && _a !== void 0 ? _a : [])],
433
+ }
434
+ : job,
435
+ ];
436
+ })),
437
+ }).map(([id, job]) => [
438
+ id,
439
+ switchLabel ? { ...job, if: andIf(job.if, relevantEvent) } : job,
440
+ ])),
441
+ };
442
+ };
443
+ exports.withReviewStopSwitch = withReviewStopSwitch;
444
+ const CANCEL_REVIEW_RUNS_JOB_ID = "catladder-wait-review-runs";
445
+ /**
446
+ * the review workflow deploys review apps itself, outside the deploy /
447
+ * stop concurrency group — a teardown would race a deploy still running
448
+ * there (the deploy finishing after the stop leaves the app and its
449
+ * database behind). So the stop first waits for the PR's unfinished
450
+ * review runs to end — cancelling them when the PR was closed, letting
451
+ * them finish when only the label was switched off (their CI still
452
+ * counts). Never fails: a stuck run must not keep the teardown from
453
+ * running (it gives up after 30 minutes).
454
+ */
455
+ const makeCancelReviewRunsJob = () => ({
456
+ [CANCEL_REVIEW_RUNS_JOB_ID]: {
457
+ name: "wait for running review deploys",
458
+ "runs-on": "ubuntu-latest",
459
+ permissions: { actions: "write", "pull-requests": "read" },
460
+ env: { GH_TOKEN: "${{ github.token }}" },
461
+ steps: [
462
+ {
463
+ name: "wait for running review deploys",
464
+ run: [
465
+ `branch=$(gh pr view "$CL_PR_NUMBER" -R "$GITHUB_REPOSITORY" --json headRefName -q .headRefName) || exit 0`,
466
+ `runs=$(gh run list -R "$GITHUB_REPOSITORY" --workflow catladder-review.yml --branch "$branch" --limit 20 --json databaseId,status -q '.[] | select(.status != "completed") | .databaseId') || exit 0`,
467
+ `# a closed PR's CI is worthless: cancel it. Otherwise let the`,
468
+ `# PR's CI finish (cancelling it would leave catladder ✅ red)`,
469
+ `if [ "$(jq -r '.action // ""' "$GITHUB_EVENT_PATH")" = closed ]; then`,
470
+ ` for id in $runs; do echo "cancelling review run $id"; gh run cancel "$id" -R "$GITHUB_REPOSITORY" || true; done`,
471
+ `fi`,
472
+ `for id in $runs; do`,
473
+ ` echo "waiting for review run $id"`,
474
+ ` for _ in $(seq 1 360); do`,
475
+ ` [ "$(gh run view "$id" -R "$GITHUB_REPOSITORY" --json status -q .status)" = completed ] && break`,
476
+ ` sleep 5`,
477
+ ` done`,
478
+ `done`,
479
+ `exit 0`,
480
+ ].join("\n"),
481
+ shell: "bash",
482
+ },
483
+ ],
484
+ },
485
+ });
486
+ /**
487
+ * `drafts: "skip"`: draft PRs run nothing — every job of the review
488
+ * workflow skips them, and marking the PR ready starts the run. A
489
+ * skipped `catladder ✅` can't let a draft through: drafts can't be
490
+ * merged.
491
+ */
492
+ const withDraftsSkipped = (workflow) => {
493
+ const on = workflow.on;
494
+ return {
495
+ ...workflow,
496
+ on: {
497
+ ...workflow.on,
498
+ pull_request: {
499
+ ...on.pull_request,
500
+ types: [...on.pull_request.types, "ready_for_review"],
501
+ },
502
+ },
503
+ jobs: Object.fromEntries(Object.entries(workflow.jobs).map(([id, job]) => [
504
+ id,
505
+ { ...job, if: andIf(job.if, "!github.event.pull_request.draft") },
506
+ ])),
507
+ };
508
+ };
509
+ exports.withDraftsSkipped = withDraftsSkipped;
510
+ //# sourceMappingURL=reviewDeployWorkflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewDeployWorkflow.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/github/reviewDeployWorkflow.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ const rules_1 = require("../../rules");
6
6
  const config_1 = require("../../types/config");
7
7
  const configruedEnvs_1 = require("../../config/configruedEnvs");
8
8
  const autoStop_1 = require("../../autoStop");
9
+ const reviewApps_1 = require("../../reviewApps");
10
+ const reviewDeployGate_1 = require("./reviewDeployGate");
9
11
  const createAllJobs_1 = require("../../pipeline/createAllJobs");
10
12
  const jobImagesPlan_1 = require("../../customImages/jobImagesPlan");
11
13
  const shippedCatci_1 = require("../../catci/shippedCatci");
@@ -106,7 +108,6 @@ class GitlabBackend {
106
108
  return [mainInclude, ...componentIncludes];
107
109
  }
108
110
  async createPipeline(config, images) {
109
- const stages = (0, getPipelineStages_1.getPipelineStages)(config);
110
111
  // register the release image first: the per-trigger job creation
111
112
  // below emits the build jobs of all images registered so far. The
112
113
  // release jobs themselves are created afterwards — they need the
@@ -120,11 +121,36 @@ class GitlabBackend {
120
121
  ...config_1.ALL_PIPELINE_TRIGGERS,
121
122
  ...branchTriggers,
122
123
  ];
123
- const jobsPerTrigger = await Promise.all(allTriggers.map(async (trigger) => ({
124
- trigger,
125
- jobs: await (0, createGitlabJobs_1.createGitlabJobs)(await (0, createAllJobs_1.createAllJobs)({ config, trigger, pipelineType: this.type }), images, getGitlabRulesForTrigger(trigger)),
126
- })));
124
+ const reviewApps = (0, reviewApps_1.getReviewAppsConfig)(config);
125
+ const jobsPerTrigger = await Promise.all(allTriggers.map(async (trigger) => {
126
+ const catladderJobs = await (0, createAllJobs_1.createAllJobs)({
127
+ config,
128
+ trigger,
129
+ pipelineType: this.type,
130
+ });
131
+ // review deploys behind one switch per MR (reviewApps config)
132
+ const reviewDeployGate = trigger === "mr"
133
+ ? (0, reviewDeployGate_1.addGitlabReviewDeployGate)(catladderJobs, reviewApps)
134
+ : undefined;
135
+ const jobs = await (0, createGitlabJobs_1.createGitlabJobs)(catladderJobs, images, getGitlabRulesForTrigger(trigger));
136
+ return {
137
+ trigger,
138
+ jobs: reviewDeployGate
139
+ ? [
140
+ {
141
+ name: reviewDeployGate_1.REVIEW_DEPLOY_GATE_JOB_NAME,
142
+ gitlabJob: reviewDeployGate,
143
+ context: null,
144
+ },
145
+ ...jobs,
146
+ ]
147
+ : jobs,
148
+ };
149
+ }));
127
150
  const allJobsPerTrigger = jobsPerTrigger.flatMap(({ jobs }) => jobs);
151
+ const stages = (0, getPipelineStages_1.getPipelineStages)(config, new Set(allJobsPerTrigger
152
+ .map(({ gitlabJob }) => gitlabJob.stage)
153
+ .filter((stage) => typeof stage === "string")));
128
154
  // the jobs the queued-release executor waits for: everything that
129
155
  // runs automatically in a main-branch pipeline. Manual jobs (stop,
130
156
  // rollback, gates) are excluded — gitlab skips a job whose needs
@@ -200,6 +226,7 @@ class GitlabBackend {
200
226
  },
201
227
  branchPipelines: branchTriggers.map(({ branch }) => branch),
202
228
  autoStop: (0, autoStop_1.getAutoStopConfig)(config),
229
+ reviewApps,
203
230
  });
204
231
  }
205
232
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GitlabBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/gitlab/GitlabBackend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitlabBackend.js","sourceRoot":"","sources":["../../../../../../../../packages/pipeline/src/backends/gitlab/GitlabBackend.ts"],"names":[],"mappings":"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"}