fix(ci): include skin site API error details in failures

This commit is contained in:
Disy committed 2026-10-20 19:17:07 +08:00
1 parent be3a1eda8c
commit f81a588dc1
2 files changed
+17 -2

No files matched your search

+4 -2
View File
@@ -57,12 +57,14 @@ export async function publishSkinSite({
continue
}
if (!response.ok) {
await response.body?.cancel()
const details = await response.json().catch(() => null)
if ((response.status === 429 || response.status >= 500) && attempt + 1 < attempts) {
await sleep(500 * (attempt + 1))
continue
}
throw new Error(`Skin site ${route}: HTTP ${response.status}`)
throw new Error(
`Skin site ${route}: HTTP ${response.status}${typeof details?.errorMessage === 'string' ? ` - ${details.errorMessage.slice(0, 1000)}` : ''}`,
)
}
let result
try {
@@ -170,3 +170,16 @@ test('CLI emits a GitHub error and exits nonzero when credentials are missing',
assert.equal(result.status, 1)
assert.match(result.stderr, /::error::.*SKIN_SITE_CI_UPLOAD_TOKEN/)
})
test('reports structured server errors when creating the upload session fails', async (t) => {
const { archivePath } = await fixture(t)
await assert.rejects(
publishSkinSite(
settings(archivePath, {
fetch: async () =>
Response.json({ errorMessage: 'Upload storage unavailable' }, { status: 500 }),
}),
),
/HTTP 500 - Upload storage unavailable/,
)
})