background tests: ci.yml runs the CI and the acceptance matrix on every push again but nothing waits for them (the gate no longer waits for the parent's run, which a release's own bump push cancels; the record job needs only the installers); tools/ci-status.ts reports main's newest test run and release.ts prints a red one as a warning

This commit is contained in:
CRTkafa 2026-10-16 07:17:19 +08:00
parent b84538e4cb
commit 9059b2b32a
5 changed files with 69 additions and 10 deletions

View file

@ -275,6 +275,12 @@ async function main(): Promise<void> {
push ${branch}, push ${tag}; then in parallel: Mac build + notarize -> ${out.replace(HOME, '~')}; macOS acceptance (${accCached ? 'cached' : 'runs now'}, key ${key.slice(0, 12)});
Forgejo ci (candidate of the bump commit) + release.yml (promotion); add, verify, publish to ${rehearsal ? 'the rehearsal channel' : 'stable'} via ${host};
${rehearsal ? 'app copied to a scratch folder; then the tag, release, candidates, branch and storebound.dev files of the rehearsal are deleted' : 'update /Applications/storebound.app; print npm publish + npm deprecate'}`);
// background tests never gate a release; a red result is printed so the next patch fixes it
try {
const { mainTests } = await import('./ci-status');
const t = await mainTests();
if (t.state === 'red') say(`WARNING: background tests are red on ${t.sha.slice(0, 10)} (${t.failed.join(', ')}): ${t.run}; releasing anyway, fix it in the next patch`);
} catch (e) { say(`background tests: not read (${(e as Error).message.slice(0, 120)})`); }
// the dry run catches what the bump would refuse
if (!rehearsal && !resume) { try { cutChangelog(readFileSync(join(ROOT, 'CHANGELOG.md'), 'utf8'), version, '2000-01-01'); } catch (e) { fail((e as Error).message); } }
if (!yes) { console.log('\ndry run: nothing changed (--yes to release)'); return; }