Fix: Release als Draft anlegen, erst nach Asset-Upload veroeffentlichen (Auto-Update-Race)
User-Report: Auto-Update schlug mit "Setup-Asset nicht gefunden" fehl, wenn der Update-Check waehrend des Asset-Uploads eines neuen Releases feuerte. Ursache: release:gitea pushte Tag + erstellte das Release (draft:false) VOR dem Asset-Upload → das "latest"-Release war den ganzen Upload ueber sichtbar, aber ohne latest.yml (Gitea-Assets haben keinen digest → der Updater holt den Integritaets-Hash aus latest.yml, das zuletzt hochgeladen wird). Fix: Release als draft:true anlegen → alle Assets hochladen → dann PATCH draft:false. Der Updater ueberspringt Drafts und sieht das Release erst, wenn es komplett ist. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
2ad08fda05
commit
254fce8736
@ -256,7 +256,10 @@ async function createOrGetRelease(baseApi, tag, authHeader, notes) {
|
||||
target_commitish: "main",
|
||||
name: tag,
|
||||
body: notes || `Release ${tag}`,
|
||||
draft: false,
|
||||
// Als Draft anlegen — der Auto-Updater ueberspringt Drafts. So wird das Release erst
|
||||
// NACH dem Asset-Upload (unten via PATCH draft:false) "latest"; ein Update-Check kann
|
||||
// nie ein Release ohne Setup/latest.yml sehen ("Setup-Asset nicht gefunden").
|
||||
draft: true,
|
||||
prerelease: false
|
||||
};
|
||||
const created = await apiRequest("POST", `${baseApi}/releases`, authHeader, JSON.stringify(payload));
|
||||
@ -363,6 +366,14 @@ async function main() {
|
||||
const release = await createOrGetRelease(baseApi, tag, authHeader, releaseNotes);
|
||||
await uploadReleaseAssets(baseApi, release.id, authHeader, assets.releaseDir, assets.files);
|
||||
|
||||
// Erst JETZT veroeffentlichen (draft:false), nachdem ALLE Assets oben hochgeladen sind.
|
||||
// Davor war das Release den ganzen Upload ueber sichtbar, aber ohne latest.yml/Setup →
|
||||
// Auto-Update-Checks in diesem Fenster scheiterten mit "Setup-Asset nicht gefunden".
|
||||
const published = await apiRequest("PATCH", `${baseApi}/releases/${release.id}`, authHeader, JSON.stringify({ draft: false }));
|
||||
if (!published.ok) {
|
||||
throw new Error(`Failed to publish release (${published.status}): ${JSON.stringify(published.body)}`);
|
||||
}
|
||||
|
||||
process.stdout.write(`Release published: ${release.html_url || `${repo.baseUrl}/${repo.owner}/${repo.repo}/releases/tag/${tag}`}\n`);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user