diff --git a/packages/build-tools/src/steps/functions/saveCache.ts b/packages/build-tools/src/steps/functions/saveCache.ts index 16d968bb26..7595af23d5 100644 --- a/packages/build-tools/src/steps/functions/saveCache.ts +++ b/packages/build-tools/src/steps/functions/saveCache.ts @@ -141,6 +141,10 @@ export async function uploadCacheAsync({ return; } const textResult = await asyncResult(response.text()); + const errorMessage = extractValidationErrorMessage(textResult.value); + if (errorMessage) { + throw new Error(errorMessage); + } throw new Error(`Unexpected response from server (${response.status}): ${textResult.value}`); } @@ -231,6 +235,19 @@ export async function uploadPublicCacheAsync({ logger.info(`Uploaded cache archive to ${archivePath} (${formatBytes(size)}).`); } +function extractValidationErrorMessage(body: string | undefined): string | undefined { + if (!body) { + return undefined; + } + try { + const { errors } = JSON.parse(body); + if (errors?.[0]?.code === 'VALIDATION_ERROR') { + return errors[0].message; + } + } catch {} + return undefined; +} + export async function compressCacheAsync({ paths, workingDirectory,