@detergent-software/conductor 3.0.0-dev.9 → 3.0.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.
- package/CHANGELOG.md +475 -0
- package/README.md +271 -125
- package/build/brief-cli.js +5 -12
- package/build/brief-cli.js.map +1 -1
- package/build/brief.js +4 -3
- package/build/brief.js.map +1 -1
- package/build/broker-cli.js +41 -14
- package/build/broker-cli.js.map +1 -1
- package/build/broker.js +1 -1
- package/build/broker.js.map +1 -1
- package/build/cli.js +221 -63
- package/build/cli.js.map +1 -1
- package/build/clones.js +92 -0
- package/build/clones.js.map +1 -0
- package/build/code-host-cli.js +172 -40
- package/build/code-host-cli.js.map +1 -1
- package/build/code-host-service.js +35 -2
- package/build/code-host-service.js.map +1 -1
- package/build/code-host.js +138 -16
- package/build/code-host.js.map +1 -1
- package/build/conditions.js +33 -16
- package/build/conditions.js.map +1 -1
- package/build/config.js +58 -28
- package/build/config.js.map +1 -1
- package/build/console.js +17 -27
- package/build/console.js.map +1 -1
- package/build/credentials.js +86 -54
- package/build/credentials.js.map +1 -1
- package/build/daemon.js +53 -65
- package/build/daemon.js.map +1 -1
- package/build/file-lock.js +155 -40
- package/build/file-lock.js.map +1 -1
- package/build/follow-ups.js +2 -2
- package/build/follow-ups.js.map +1 -1
- package/build/help.js +241 -83
- package/build/help.js.map +1 -1
- package/build/history.js +10 -4
- package/build/history.js.map +1 -1
- package/build/host/credential-manager.js +109 -0
- package/build/host/credential-manager.js.map +1 -0
- package/build/host/keychain.js +44 -0
- package/build/host/keychain.js.map +1 -0
- package/build/host/launchd.js +118 -0
- package/build/host/launchd.js.map +1 -0
- package/build/host/libsecret.js +40 -0
- package/build/host/libsecret.js.map +1 -0
- package/build/host/macos-terminal.js +63 -0
- package/build/host/macos-terminal.js.map +1 -0
- package/build/host/platform.js +4 -0
- package/build/host/platform.js.map +1 -0
- package/build/host/secrets.js +46 -0
- package/build/host/secrets.js.map +1 -0
- package/build/host/shell.js +26 -0
- package/build/host/shell.js.map +1 -0
- package/build/host/startup.js +26 -0
- package/build/host/startup.js.map +1 -0
- package/build/host/systemd.js +91 -0
- package/build/host/systemd.js.map +1 -0
- package/build/host/task-scheduler.js +78 -0
- package/build/host/task-scheduler.js.map +1 -0
- package/build/host/terminal.js +46 -0
- package/build/host/terminal.js.map +1 -0
- package/build/host/tmux.js +39 -0
- package/build/host/tmux.js.map +1 -0
- package/build/host/windows-terminal.js +46 -0
- package/build/host/windows-terminal.js.map +1 -0
- package/build/in-process.js +5 -4
- package/build/in-process.js.map +1 -1
- package/build/inbox.js +47 -35
- package/build/inbox.js.map +1 -1
- package/build/init.js +509 -0
- package/build/init.js.map +1 -0
- package/build/landing.js +107 -10
- package/build/landing.js.map +1 -1
- package/build/lib/providers/ado/code-host.js +5 -1
- package/build/lib/providers/ado/code-host.js.map +1 -1
- package/build/lib/providers/ado/pipelines.js +138 -26
- package/build/lib/providers/ado/pipelines.js.map +1 -1
- package/build/lib/providers/ado/trigger.js +5 -0
- package/build/lib/providers/ado/trigger.js.map +1 -1
- package/build/lib/providers/ado/writes.js +17 -2
- package/build/lib/providers/ado/writes.js.map +1 -1
- package/build/lib/providers/github/actions.js +90 -3
- package/build/lib/providers/github/actions.js.map +1 -1
- package/build/lib/providers/github/code-host.js +2 -0
- package/build/lib/providers/github/code-host.js.map +1 -1
- package/build/lib/providers/github/writes.js +25 -2
- package/build/lib/providers/github/writes.js.map +1 -1
- package/build/lib/providers/index.js +3 -2
- package/build/lib/providers/index.js.map +1 -1
- package/build/lib/providers/npm/stage.js +14 -1
- package/build/lib/providers/npm/stage.js.map +1 -1
- package/build/lib/providers/timing.js +10 -0
- package/build/lib/providers/timing.js.map +1 -0
- package/build/lib/providers/verdicts/pr.js +47 -6
- package/build/lib/providers/verdicts/pr.js.map +1 -1
- package/build/lib/providers/verdicts/runs.js +12 -2
- package/build/lib/providers/verdicts/runs.js.map +1 -1
- package/build/logins.js +13 -6
- package/build/logins.js.map +1 -1
- package/build/manager.js +121 -55
- package/build/manager.js.map +1 -1
- package/build/note.js +5 -15
- package/build/note.js.map +1 -1
- package/build/notes.js +130 -23
- package/build/notes.js.map +1 -1
- package/build/notify.js +104 -42
- package/build/notify.js.map +1 -1
- package/build/npm-reads.js +151 -22
- package/build/npm-reads.js.map +1 -1
- package/build/ownership.js +2 -2
- package/build/paths.js +44 -1
- package/build/paths.js.map +1 -1
- package/build/plugin.js +4 -2
- package/build/plugin.js.map +1 -1
- package/build/profile-fields.js +153 -0
- package/build/profile-fields.js.map +1 -0
- package/build/profile-layers.js +264 -0
- package/build/profile-layers.js.map +1 -0
- package/build/profile.js +69 -49
- package/build/profile.js.map +1 -1
- package/build/project-check-cli.js +17 -19
- package/build/project-check-cli.js.map +1 -1
- package/build/project-check.js +166 -104
- package/build/project-check.js.map +1 -1
- package/build/protocol.js +5 -21
- package/build/protocol.js.map +1 -1
- package/build/pushover.js +5 -5
- package/build/pushover.js.map +1 -1
- package/build/queue.js +4 -4
- package/build/queue.js.map +1 -1
- package/build/registry.js +195 -36
- package/build/registry.js.map +1 -1
- package/build/release-kinds.js +34 -0
- package/build/release-kinds.js.map +1 -0
- package/build/rule-actions.js +8 -6
- package/build/rule-actions.js.map +1 -1
- package/build/rules-service.js +83 -44
- package/build/rules-service.js.map +1 -1
- package/build/rules.js +23 -23
- package/build/rules.js.map +1 -1
- package/build/run.js +20 -7
- package/build/run.js.map +1 -1
- package/build/runs.js +218 -68
- package/build/runs.js.map +1 -1
- package/build/scheduler.js +78 -12
- package/build/scheduler.js.map +1 -1
- package/build/search.js +2 -1
- package/build/search.js.map +1 -1
- package/build/server.js +51 -14
- package/build/server.js.map +1 -1
- package/build/spend.js +1 -1
- package/build/spend.js.map +1 -1
- package/build/store.js +79 -20
- package/build/store.js.map +1 -1
- package/build/supervise.js +1 -1
- package/build/supervise.js.map +1 -1
- package/build/timeline.js +104 -0
- package/build/timeline.js.map +1 -0
- package/build/tracker-reads-cli.js +4 -3
- package/build/tracker-reads-cli.js.map +1 -1
- package/build/trackers.js +56 -10
- package/build/trackers.js.map +1 -1
- package/build/train-cli.js +6 -5
- package/build/train-cli.js.map +1 -1
- package/build/train.js +2 -2
- package/build/train.js.map +1 -1
- package/build/upgrade.js +8 -9
- package/build/upgrade.js.map +1 -1
- package/build/wait.js +10 -10
- package/build/wait.js.map +1 -1
- package/build/watchers/ado.js +42 -19
- package/build/watchers/ado.js.map +1 -1
- package/build/watchers/github.js +18 -4
- package/build/watchers/github.js.map +1 -1
- package/build/watchers/index.js +2 -2
- package/build/watchers/index.js.map +1 -1
- package/build/watchers/linear-queue.js +47 -14
- package/build/watchers/linear-queue.js.map +1 -1
- package/build/watchers/linear-writes.js +26 -12
- package/build/watchers/linear-writes.js.map +1 -1
- package/build/watchers/linear.js +2 -2
- package/build/watchers/linear.js.map +1 -1
- package/build/watchers/source.js +5 -1
- package/build/watchers/source.js.map +1 -1
- package/build/webhook.js +80 -0
- package/build/webhook.js.map +1 -0
- package/build/why.js +1 -1
- package/build/why.js.map +1 -1
- package/build/worktrees.js +56 -93
- package/build/worktrees.js.map +1 -1
- package/package.json +61 -61
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/model.ts +46 -6
- package/plugin/hooks/register.tsx +41 -2
- package/plugin/skills/conductor-console/SKILL.md +26 -27
- package/plugin/skills/work-item/SKILL.md +58 -54
- package/plugin/skills/work-item/trackers/ado-boards.md +2 -2
- package/plugin/skills/work-item/trackers/github-issues.md +1 -1
- package/plugin/skills/work-item/trackers/linear.md +2 -2
- package/plugin/types/index.d.ts +1 -1
- package/protocol/PROTOCOL.md +3 -9
- package/build/checkout-sync.js +0 -249
- package/build/checkout-sync.js.map +0 -1
- package/build/credential.js +0 -66
- package/build/credential.js.map +0 -1
- package/build/startup.js +0 -92
- package/build/startup.js.map +0 -1
- package/build/tab.js +0 -32
- package/build/tab.js.map +0 -1
package/build/runs.js
CHANGED
|
@@ -1,28 +1,26 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
1
2
|
import { branchOf } from "./checkout.js";
|
|
2
|
-
import { repoKey, repoOf } from "./code-host.js";
|
|
3
|
+
import { baseOf, checkoutDir, ciOf, isOwnRepo, repoKey, repoOf } from "./code-host.js";
|
|
3
4
|
import { ConductorError } from "./errors.js";
|
|
4
|
-
import { answersTo, NotFound, pipelinesNamed, ProviderError, releasedRuns, runsVerdict, stem, } from "./lib/providers/index.js";
|
|
5
|
+
import { answersTo, heldBack, NotFound, pipelinesNamed, ProviderError, releasedRuns, runsVerdict, stem, } from "./lib/providers/index.js";
|
|
5
6
|
import { itemKey } from "./ownership.js";
|
|
6
7
|
import { trackerKey } from "./profile.js";
|
|
7
8
|
import { outputOf } from "./run.js";
|
|
9
|
+
// The matched lines --grep keeps of one task, so a pattern that matches everything stays readable.
|
|
10
|
+
export const GREP_LINES = 200;
|
|
8
11
|
// The git of a CI that reads none (GitHub Actions only asks for the runs of a SHA).
|
|
9
12
|
export const NO_GIT = {
|
|
10
13
|
isAncestor: () => Promise.reject(new Error('this CI reads no git')),
|
|
11
14
|
show: () => Promise.reject(new Error('this CI reads no git')),
|
|
12
15
|
};
|
|
13
|
-
// How long a merge may show no run before that means none
|
|
14
|
-
// minutes after the merge, GitHub queues a push's runs within seconds (the
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
//
|
|
18
|
-
// Pipelines building a GitHub repo would need an organization the profile doesn't name).
|
|
16
|
+
// How long a merge may show no run before that means none, by the CI that builds it: Azure DevOps
|
|
17
|
+
// can list a run ten minutes after the merge, GitHub queues a push's runs within seconds (the
|
|
18
|
+
// work-item helper's).
|
|
19
|
+
export const GRACE_MINUTES = { 'ado-pipelines': 15, 'github-actions': 5 };
|
|
20
|
+
// Why `conduct runs` can't read the repo's CI (ciOf), or null.
|
|
19
21
|
export function ciRefusal(profile, repo) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if ((profile.ci.kind === 'ado-pipelines') === (repo.host === 'ado'))
|
|
23
|
-
return null;
|
|
24
|
-
const host = repo.host === 'ado' ? 'an Azure DevOps' : 'a GitHub';
|
|
25
|
-
return `the profile's ci is ${profile.ci.kind} beside ${host} code host, which conduct can't read yet`;
|
|
22
|
+
const found = ciOf(profile, repo);
|
|
23
|
+
return typeof found === 'string' ? found : null;
|
|
26
24
|
}
|
|
27
25
|
// Why each failed run of the verdict failed. A log that can't be read says why in its note.
|
|
28
26
|
export async function failedLogs(ci, report) {
|
|
@@ -94,17 +92,70 @@ export function gitReader(git, dir, base) {
|
|
|
94
92
|
},
|
|
95
93
|
};
|
|
96
94
|
}
|
|
95
|
+
// The lines of each run of the verdict that match a pattern, whatever the run's result. A pipeline
|
|
96
|
+
// with no run, a run that hasn't finished and a log the provider won't give (a lasting refusal, or no
|
|
97
|
+
// such log) each say so in a note, so nobody takes them for a run that printed nothing. Anything else
|
|
98
|
+
// (a lost login, a transient failure) is thrown, so the caller asks again.
|
|
99
|
+
export async function grepLogs(ci, report, pattern) {
|
|
100
|
+
return Promise.all(report.pipelines.map(async (r) => {
|
|
101
|
+
const about = { pipeline: r.pipeline.name, run: r.run, state: r.state, url: r.url };
|
|
102
|
+
if (r.run === null)
|
|
103
|
+
return { ...about, matches: [], note: `no run (${r.state}): nothing searched`, searched: [] };
|
|
104
|
+
const grep = await grepRun(ci, r.run, pattern);
|
|
105
|
+
const note = grep.note ?? PARTIAL[r.state];
|
|
106
|
+
return { ...about, ...grep, ...(note === undefined ? {} : { note }) };
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
// One run's task logs (those `only` names, else all) searched for a pattern. A log the provider
|
|
110
|
+
// won't give (a lasting refusal, or no such log) ends the search with a note, keeping what it found
|
|
111
|
+
// before; anything else (a lost login, a transient failure) is thrown, so the caller asks again.
|
|
112
|
+
export async function grepRun(ci, run, pattern, only) {
|
|
113
|
+
const grep = { matches: [], searched: [] };
|
|
114
|
+
try {
|
|
115
|
+
for await (const { lines, stage, task } of ci.taskLogs(run, only ? { only } : {})) {
|
|
116
|
+
grep.searched.push({ lines: lines.length, stage, task });
|
|
117
|
+
const matched = lines.filter((line) => pattern.test(line));
|
|
118
|
+
if (matched.length === 0)
|
|
119
|
+
continue;
|
|
120
|
+
grep.matches.push({
|
|
121
|
+
lines: matched.slice(0, GREP_LINES),
|
|
122
|
+
stage,
|
|
123
|
+
task,
|
|
124
|
+
...(matched.length > GREP_LINES ? { truncated: matched.length - GREP_LINES } : {}),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (error instanceof NotFound || (error instanceof ProviderError && !error.transient)) {
|
|
130
|
+
return { ...grep, note: `its log can't be read: ${error.message}` };
|
|
131
|
+
}
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
return grep;
|
|
135
|
+
}
|
|
136
|
+
// Why a run's log may not be all it will print, by its state.
|
|
137
|
+
const PARTIAL = {
|
|
138
|
+
queued: 'the run is queued: its log may be partial',
|
|
139
|
+
running: 'the run is running: its log may be partial',
|
|
140
|
+
'waiting-for-approval': 'the run waits on an approval: the stages after it have not run',
|
|
141
|
+
};
|
|
142
|
+
// The runs a merge's batched pipelines wait behind (Azure Pipelines holds a `batch: true` push until
|
|
143
|
+
// the run on the base ends), such as `API Deploy is batched behind run 7221`; null when none is.
|
|
144
|
+
export function batchedBehind(pipelines, now) {
|
|
145
|
+
const held = pipelines.flatMap(({ behind, pipeline, state }) => behind !== undefined && heldBack({ behind, state }, now)
|
|
146
|
+
? [
|
|
147
|
+
`${pipeline.name} is batched behind run ${behind.run}${behind.finished === null ? '' : `, which ended at ${behind.finished}`}`,
|
|
148
|
+
]
|
|
149
|
+
: []);
|
|
150
|
+
return held.length > 0 ? held.join(', ') : null;
|
|
151
|
+
}
|
|
97
152
|
// The facts of a merge from its code host, for a CI that reads no git (GitHub Actions): its full
|
|
98
153
|
// SHA and when it merged.
|
|
99
154
|
export function hostMergeFacts(commit) {
|
|
100
155
|
return { changed: [], mergedAt: Date.parse(commit.date), sha: commit.sha };
|
|
101
156
|
}
|
|
102
|
-
// Whether a repo is the profile's own (Azure Repos names are case-insensitive, and so are GitHub's).
|
|
103
|
-
export function isOwnRepo(profile, repo) {
|
|
104
|
-
return repoKey(repo).toLowerCase() === repoKey(repoOf(profile)).toLowerCase();
|
|
105
|
-
}
|
|
106
157
|
// A merge's runs in a wake, one line: the verdict, what it is about, and each release's stage, such
|
|
107
|
-
// as `merge 1a2b3c4d succeeded; cli @
|
|
158
|
+
// as `merge 1a2b3c4d succeeded; cli @contoso/cli@8.6.2-dev.1 staged: npm stage approve
|
|
108
159
|
// <id> --otp=<code>`.
|
|
109
160
|
export function mergeLine(report) {
|
|
110
161
|
const at = `merge ${report.sha.slice(0, 8)}`;
|
|
@@ -119,12 +170,16 @@ export function mergeLine(report) {
|
|
|
119
170
|
line = `${at} cancelled: ${named('cancelled')}${hint === null ? '' : ` (${hint})`}`;
|
|
120
171
|
break;
|
|
121
172
|
}
|
|
122
|
-
case 'failed':
|
|
123
|
-
|
|
173
|
+
case 'failed': {
|
|
174
|
+
const hint = requeueHint(report);
|
|
175
|
+
line = `${at} failed: ${named('failed')} (conduct runs ${report.sha.slice(0, 8)} has the logs${hint === null ? '' : `; ${hint}`})`;
|
|
124
176
|
break;
|
|
125
|
-
|
|
126
|
-
|
|
177
|
+
}
|
|
178
|
+
case 'missing': {
|
|
179
|
+
const hint = requeueHint(report);
|
|
180
|
+
line = `${at} missing: ${named('not-queued')} never queued${hint === null ? '' : ` (${hint})`}`;
|
|
127
181
|
break;
|
|
182
|
+
}
|
|
128
183
|
case 'waiting-for-approval':
|
|
129
184
|
line = `${at} waiting-for-approval: ${report.pipelines
|
|
130
185
|
.filter((r) => r.state === 'waiting-for-approval')
|
|
@@ -137,6 +192,8 @@ export function mergeLine(report) {
|
|
|
137
192
|
const stages = Object.entries(report.stages ?? {}).flatMap(([key, stage]) => {
|
|
138
193
|
if ('error' in stage)
|
|
139
194
|
return [`${key} stage unread: ${stage.error}`];
|
|
195
|
+
if (stage.deferredTo)
|
|
196
|
+
return [`${key} released nothing: deferred to ${stage.deferredTo.slice(0, 8)}'s run`];
|
|
140
197
|
if (!stage.stageId)
|
|
141
198
|
return [];
|
|
142
199
|
const version = `${stage.package ?? '?'}@${stage.version ?? '?'}`;
|
|
@@ -159,7 +216,7 @@ export async function mergeRuns({ base, ci, facts, git, now, only, repo, }) {
|
|
|
159
216
|
}
|
|
160
217
|
}
|
|
161
218
|
const verdict = runsVerdict({
|
|
162
|
-
graceMs: GRACE_MINUTES[
|
|
219
|
+
graceMs: GRACE_MINUTES[ci.kind] * 60_000,
|
|
163
220
|
mergedAt: facts.mergedAt,
|
|
164
221
|
now,
|
|
165
222
|
only,
|
|
@@ -188,16 +245,17 @@ export async function mergeRuns({ base, ci, facts, git, now, only, repo, }) {
|
|
|
188
245
|
export async function releaseStages(ci, profile, repo, report) {
|
|
189
246
|
if (!isOwnRepo(profile, repo))
|
|
190
247
|
return {};
|
|
191
|
-
const
|
|
192
|
-
const
|
|
248
|
+
const runs = [...report.pipelines, ...(report.others ?? [])];
|
|
249
|
+
const ran = profile.releases.flatMap((release) => releasedRuns(runs, [release]).map(({ run }) => ({ key: release.key, release: ci.release(release.kind), run })));
|
|
250
|
+
const read = async (release, run) => {
|
|
193
251
|
try {
|
|
194
|
-
const stage = await
|
|
252
|
+
const stage = await release.staged(run);
|
|
195
253
|
if (stage === null)
|
|
196
254
|
return { note: 'no "staged with id" line in the run logs: nothing staged', run, stageId: null };
|
|
197
255
|
return {
|
|
198
256
|
run,
|
|
199
257
|
...stage,
|
|
200
|
-
...(stage.stageId ? { published: await
|
|
258
|
+
...(stage.stageId ? { published: await release.published(stage.package, stage.version) } : {}),
|
|
201
259
|
};
|
|
202
260
|
}
|
|
203
261
|
catch (error) {
|
|
@@ -207,42 +265,73 @@ export async function releaseStages(ci, profile, repo, report) {
|
|
|
207
265
|
throw error;
|
|
208
266
|
}
|
|
209
267
|
};
|
|
210
|
-
return Object.fromEntries(await Promise.all(ran.map(async ({ key, run }) => [key, await read(run)])));
|
|
268
|
+
return Object.fromEntries(await Promise.all(ran.map(async ({ key, release, run }) => [key, await read(release, run)])));
|
|
211
269
|
}
|
|
212
270
|
// On Azure Pipelines a cancelled run is the merge's only when no newer run carries it (the adapter
|
|
213
|
-
// takes a later run that contains the merge in its place), so it says so and how to queue it again
|
|
214
|
-
//
|
|
271
|
+
// takes a later run that contains the merge in its place), so it says so and how to queue it again.
|
|
272
|
+
// A missing one (no run, and none ahead of its batch) gets the same line (ATK-434), with either
|
|
273
|
+
// outcome: neither comes while a batch is held back. A failed one that isn't a retry of a failed run
|
|
274
|
+
// gets it once, for a flake its log shows (ATK-638), beside the cancelled and missing ones. Null for
|
|
275
|
+
// any other outcome. On GitHub (ATK-640) a failed or cancelled run not re-run yet gets the line to
|
|
276
|
+
// re-run it, and a missing one none: there is no run to re-run.
|
|
215
277
|
export function requeueHint(report) {
|
|
216
|
-
if (report.
|
|
278
|
+
if (report.repo.startsWith('github:'))
|
|
279
|
+
return rerunHint(report);
|
|
280
|
+
const command = (r) => `conduct runs ${report.sha.slice(0, 8)} --requeue ${pipelineStem(r.pipeline)}`;
|
|
281
|
+
const ended = report.pipelines.filter((r) => r.state === 'cancelled' || r.state === 'not-queued').map(command);
|
|
282
|
+
if (report.outcome === 'failed') {
|
|
283
|
+
const flaky = report.pipelines.filter((r) => r.state === 'failed' && r.retryOf === undefined).map(command);
|
|
284
|
+
const hints = [
|
|
285
|
+
...(flaky.length > 0
|
|
286
|
+
? [`when its log shows a flake that no change caused, to queue it again (once): ${flaky.join(', ')}`]
|
|
287
|
+
: []),
|
|
288
|
+
...(ended.length > 0 ? [`to queue the cancelled or missing ones: ${ended.join(', ')}`] : []),
|
|
289
|
+
];
|
|
290
|
+
return hints.length > 0 ? hints.join('; ') : null;
|
|
291
|
+
}
|
|
292
|
+
if ((report.outcome !== 'cancelled' && report.outcome !== 'missing') || ended.length === 0)
|
|
217
293
|
return null;
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
return `no newer run on the base carries the merge; to queue it again: ${commands.join(', ')}`;
|
|
294
|
+
return report.outcome === 'cancelled'
|
|
295
|
+
? `no newer run on the base carries the merge; to queue it again: ${ended.join(', ')}`
|
|
296
|
+
: `to queue it: ${ended.join(', ')}`;
|
|
222
297
|
}
|
|
223
|
-
// `conduct runs <sha> --requeue <pipeline>`: the merge's cancelled run of the pipeline,
|
|
224
|
-
// run carries, queued again on the base at its tip, after checking the tip contains
|
|
225
|
-
//
|
|
226
|
-
//
|
|
227
|
-
//
|
|
298
|
+
// `conduct runs <sha> --requeue <pipeline>`: the merge's cancelled or failed run of the pipeline,
|
|
299
|
+
// which no newer run carries, queued again on the base at its tip, after checking the tip contains
|
|
300
|
+
// the merge; or its missing one (never queued, and no run ahead of its batch), queued the same way.
|
|
301
|
+
// Only for the item's own merge (its branch's PR merged as this commit), on Azure Pipelines: a run
|
|
302
|
+
// already listed that is waiting, running or succeeded, a failed run that was itself queued again
|
|
303
|
+
// for a failed one (once, ATK-638), or a batch still behind a run, is never queued. `conduct wait
|
|
304
|
+
// merge` then follows the new run, which carries the merge.
|
|
305
|
+
// On GitHub Actions (ATK-640), the project's repo or one the item checked out, the merge's failed or
|
|
306
|
+
// cancelled run is re-run as itself, at its own commit, once (GitHub's run_attempt keeps the
|
|
307
|
+
// record), and only while it is its workflow's newest run on the PR's base (the adapter refuses it
|
|
308
|
+
// otherwise). A missing run has nothing to re-run. `conduct wait merge` follows the new attempt.
|
|
228
309
|
export async function requeueRun(ctx, request) {
|
|
229
310
|
const { git, profile, worktree } = ctx;
|
|
230
311
|
const repo = repoOf(profile, request.repo);
|
|
231
|
-
if (repo.host
|
|
232
|
-
throw new ConductorError(`refused: --requeue queues the project's Azure Pipelines
|
|
233
|
-
'on GitHub, re-run the workflow there',
|
|
234
|
-
]);
|
|
312
|
+
if (repo.host === 'ado' && !isOwnRepo(profile, repo)) {
|
|
313
|
+
throw new ConductorError(`refused: --requeue queues the project's Azure Pipelines or a GitHub repo's Actions, not ${repoKey(repo)}`);
|
|
235
314
|
}
|
|
236
|
-
const
|
|
237
|
-
if (
|
|
238
|
-
throw new ConductorError(`refused: ${
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
315
|
+
const ci = ciOf(profile, repo);
|
|
316
|
+
if (typeof ci === 'string')
|
|
317
|
+
throw new ConductorError(`refused: ${ci}`);
|
|
318
|
+
// The code host queues its own CI's runs (Azure Repos queues a build, GitHub re-runs a run).
|
|
319
|
+
if (ci.kind === 'ado-pipelines' && repo.host === 'github') {
|
|
320
|
+
throw new ConductorError(`refused: --requeue queues the code host's own CI, and ${repoKey(repo)} is built by Azure Pipelines`, [`queue the run again in ${ci.repo.organization}'s ${ci.repo.project}; conduct wait merge then follows it`]);
|
|
321
|
+
}
|
|
322
|
+
const dir = isOwnRepo(profile, repo) ? worktree : checkoutDir(worktree, profile, repo);
|
|
323
|
+
if (!existsSync(dir))
|
|
324
|
+
throw new ConductorError(`no checkout of ${repoKey(repo)} at ${dir}`, ['conduct checkout it first']);
|
|
325
|
+
const base = await baseOf(git, worktree, profile, dir);
|
|
242
326
|
const host = ctx.hosts(repo);
|
|
327
|
+
// GitHub Actions needs only the merge's commit, as `conduct runs` reads it.
|
|
328
|
+
const facts = repo.host === 'github'
|
|
329
|
+
? hostMergeFacts(await host.commit(request.sha))
|
|
330
|
+
: await gitMergeFacts(git, dir, base, request.sha);
|
|
331
|
+
const short = facts.sha.slice(0, 8);
|
|
243
332
|
// The merge must be the item's: the checkout's branch carries its key, and that branch's PR merged
|
|
244
333
|
// as this commit.
|
|
245
|
-
const branch = await branchOf(git,
|
|
334
|
+
const branch = await branchOf(git, dir);
|
|
246
335
|
if (branch === null || itemKey(branch, trackerKey(profile)) !== ctx.item) {
|
|
247
336
|
throw new ConductorError(`refused: the checkout is on ${branch ?? 'no branch'}, not ${ctx.item}'s branch`);
|
|
248
337
|
}
|
|
@@ -254,7 +343,7 @@ export async function requeueRun(ctx, request) {
|
|
|
254
343
|
: `${branch}'s PR ${pr.number} is ${pr.state}${pr.mergeCommit ? `, merged as ${pr.mergeCommit.slice(0, 8)}` : ''}`,
|
|
255
344
|
]);
|
|
256
345
|
}
|
|
257
|
-
const reader = gitReader(git,
|
|
346
|
+
const reader = repo.host === 'github' ? NO_GIT : gitReader(git, dir, base);
|
|
258
347
|
const report = await mergeRuns({ base, ci: host.ci, facts, git: reader, now: ctx.now, only: null, repo });
|
|
259
348
|
const found = report.pipelines.filter((r) => answersTo(r.pipeline, request.pipeline));
|
|
260
349
|
const [run] = found;
|
|
@@ -263,14 +352,38 @@ export async function requeueRun(ctx, request) {
|
|
|
263
352
|
? `refused: ${found.map((r) => r.pipeline.file).join(' and ')} both answer to ${request.pipeline}; give the file path`
|
|
264
353
|
: `refused: merge ${short} has no run of ${request.pipeline} (the merge doesn't trigger it, or no pipeline has that name)`, [`its runs: ${report.pipelines.map((r) => `${pipelineStem(r.pipeline)} ${r.state}`).join(', ') || 'none'}`]);
|
|
265
354
|
}
|
|
266
|
-
|
|
267
|
-
|
|
355
|
+
const requeued = (queued) => ({
|
|
356
|
+
pipeline: run.pipeline.name,
|
|
357
|
+
replaces: run.run,
|
|
358
|
+
repo: repoKey(repo),
|
|
359
|
+
run: queued.run,
|
|
360
|
+
sha: facts.sha,
|
|
361
|
+
sourceVersion: queued.sourceVersion,
|
|
362
|
+
url: queued.url,
|
|
363
|
+
});
|
|
364
|
+
// The base the PR merged into, which a clone's default branch (`baseOf`) needn't be.
|
|
365
|
+
if (repo.host === 'github')
|
|
366
|
+
return requeued(await rerunGithub(host, { base: pr.base ?? base, sha: facts.sha }, run));
|
|
367
|
+
// A failed run is queued again once: a run queued by hand for a failed one (a requeue, or a
|
|
368
|
+
// person's Run pipeline) that failed too is a real failure, not a flake to run a third time.
|
|
369
|
+
if (run.state === 'failed' && run.retryOf !== undefined) {
|
|
370
|
+
throw new ConductorError(`refused: ${run.pipeline.name}'s run ${run.run} for merge ${short} failed, and it was queued again already (for run ${run.retryOf})`, ['a failed run is queued again once: fix it in a follow-up PR, or hand it to a person']);
|
|
371
|
+
}
|
|
372
|
+
const ended = (run.state === 'cancelled' || run.state === 'failed') && run.run !== null;
|
|
373
|
+
const held = heldBack(run, ctx.now);
|
|
374
|
+
if (!(ended || (run.state === 'not-queued' && !held)) || run.pipeline.id === null) {
|
|
375
|
+
const state = held ? `${run.state}, batched behind run ${run.behind?.run}` : run.state;
|
|
376
|
+
throw new ConductorError(`refused: ${run.pipeline.name}'s run for merge ${short} is ${state}${run.run === null ? '' : ` (run ${run.run})`}, not cancelled, failed or missing`, [
|
|
377
|
+
'only a cancelled or failed run that no newer run carries, or a missing one with no run ahead of its batch, is queued',
|
|
378
|
+
...(held ? [`it queues once run ${run.behind?.run} ends: conduct wait merge ${short}`] : []),
|
|
379
|
+
]);
|
|
268
380
|
}
|
|
269
381
|
// Azure DevOps can list a newer run that carries the merge this long after it, so a requeue sooner
|
|
270
382
|
// could run the pipeline twice. A newer merge's run queued later and not yet listed isn't caught.
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
383
|
+
// No push's run stands in for a failed one, so a failed run needn't wait.
|
|
384
|
+
const settled = facts.mergedAt + GRACE_MINUTES['ado-pipelines'] * 60_000;
|
|
385
|
+
if (run.state !== 'failed' && ctx.now < settled) {
|
|
386
|
+
throw new ConductorError(`refused: merge ${short} is under ${GRACE_MINUTES['ado-pipelines']} minutes old, and Azure DevOps can still list a newer run that carries it`, [`run conduct runs ${short} again after ${new Date(settled).toISOString()}`]);
|
|
274
387
|
}
|
|
275
388
|
const tip = await host.branchTip(base);
|
|
276
389
|
if (tip === null)
|
|
@@ -278,19 +391,56 @@ export async function requeueRun(ctx, request) {
|
|
|
278
391
|
if (!(await reader.isAncestor(facts.sha, tip))) {
|
|
279
392
|
throw new ConductorError(`refused: ${base}'s tip ${tip.slice(0, 8)} doesn't contain merge ${short}`);
|
|
280
393
|
}
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
repo: repoKey(repo),
|
|
286
|
-
run: queued.run,
|
|
287
|
-
sha: facts.sha,
|
|
288
|
-
sourceVersion: queued.sourceVersion,
|
|
289
|
-
url: queued.url,
|
|
290
|
-
};
|
|
394
|
+
const replaces = run.run !== null && (run.state === 'cancelled' || run.state === 'failed')
|
|
395
|
+
? { run: run.run, state: run.state }
|
|
396
|
+
: null;
|
|
397
|
+
return requeued(await host.queueRun({ branch: base, pipeline: run.pipeline.id, replaces, sourceVersion: tip }));
|
|
291
398
|
}
|
|
292
399
|
// What --requeue and --for take for a pipeline: its YAML file's stem, else its name.
|
|
293
400
|
function pipelineStem(pipeline) {
|
|
294
401
|
return stem(pipeline.file) || pipeline.name;
|
|
295
402
|
}
|
|
403
|
+
// A GitHub merge's run re-run as itself (requeueRun): a failed or cancelled one, once. Neither of
|
|
404
|
+
// Azure's waits applies, as both come from queueing at the base's tip: a re-run builds its own
|
|
405
|
+
// commit (the merge's), which the adapter allows only for the workflow's newest run on the base the
|
|
406
|
+
// PR merged into.
|
|
407
|
+
async function rerunGithub(host, { base, sha }, run) {
|
|
408
|
+
const short = sha.slice(0, 8);
|
|
409
|
+
if (run.attempt !== undefined && (run.state === 'cancelled' || run.state === 'failed')) {
|
|
410
|
+
throw new ConductorError(`refused: ${run.pipeline.name}'s run ${run.run} for merge ${short} is ${run.state}, and it was re-run already (attempt ${run.attempt})`, ['a run is re-run once: fix it in a follow-up PR, or hand it to a person']);
|
|
411
|
+
}
|
|
412
|
+
if ((run.state !== 'cancelled' && run.state !== 'failed') || run.run === null || run.pipeline.id === null) {
|
|
413
|
+
throw new ConductorError(`refused: ${run.pipeline.name}'s run for merge ${short} is ${run.state}${run.run === null ? '' : ` (run ${run.run})`}, not cancelled or failed`, [
|
|
414
|
+
run.state === 'not-queued' || run.state === 'unknown'
|
|
415
|
+
? 'GitHub Actions re-runs a run, and this workflow has none for the merge: start it on GitHub'
|
|
416
|
+
: 'only a cancelled or failed run is re-run on GitHub',
|
|
417
|
+
]);
|
|
418
|
+
}
|
|
419
|
+
return host.queueRun({
|
|
420
|
+
branch: base,
|
|
421
|
+
pipeline: run.pipeline.id,
|
|
422
|
+
replaces: { run: run.run, state: run.state },
|
|
423
|
+
sourceVersion: run.sourceVersion ?? sha,
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
// requeueHint on GitHub: each failed or cancelled run that hasn't been re-run, with --repo, since a
|
|
427
|
+
// GitHub repo is usually another repo the item checked out.
|
|
428
|
+
function rerunHint(report) {
|
|
429
|
+
const command = (r) => `conduct runs ${report.sha.slice(0, 8)} --requeue ${pipelineStem(r.pipeline)} --repo ${report.repo}`;
|
|
430
|
+
const fresh = (state) => report.pipelines.filter((r) => r.state === state && r.attempt === undefined);
|
|
431
|
+
const cancelled = fresh('cancelled').map(command);
|
|
432
|
+
if (report.outcome === 'failed') {
|
|
433
|
+
const flaky = fresh('failed').map(command);
|
|
434
|
+
const hints = [
|
|
435
|
+
...(flaky.length > 0
|
|
436
|
+
? [`when its log shows a flake that no change caused, to re-run it (once): ${flaky.join(', ')}`]
|
|
437
|
+
: []),
|
|
438
|
+
...(cancelled.length > 0 ? [`to re-run the cancelled ones: ${cancelled.join(', ')}`] : []),
|
|
439
|
+
];
|
|
440
|
+
return hints.length > 0 ? hints.join('; ') : null;
|
|
441
|
+
}
|
|
442
|
+
if (report.outcome !== 'cancelled' || cancelled.length === 0)
|
|
443
|
+
return null;
|
|
444
|
+
return `a newer run of it on the base may carry the merge; while none does, to re-run it (once): ${cancelled.join(', ')}`;
|
|
445
|
+
}
|
|
296
446
|
//# sourceMappingURL=runs.js.map
|
package/build/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
|