diff --git a/__tests__/ghcr-client.test.ts b/__tests__/ghcr-client.test.ts index 07c7a57..acff01b 100644 --- a/__tests__/ghcr-client.test.ts +++ b/__tests__/ghcr-client.test.ts @@ -25,6 +25,9 @@ const tarFile: fsHelper.FileMetadata = { const headMockNoExistingBlobs = (): object => { // Simulate none of the blobs existing currently return { + text() { + return 'Not Found' + }, status: 404 } } @@ -47,6 +50,9 @@ const headMockSomeExistingBlobs = (): object => { } else { // report all others are missing return { + text() { + return 'Not Found' + }, status: 404 } } @@ -54,6 +60,9 @@ const headMockSomeExistingBlobs = (): object => { const headMockFailure = (): object => { return { + text() { + return 'Failed the head request' + }, status: 503 } } @@ -75,6 +84,9 @@ const postMockSuccessfulIniationForAllBlobs = (): object => { const postMockFailure = (): object => { // Simulate failed initiation of uploads return { + text() { + return 'Failed the post request' + }, status: 503 } } @@ -110,6 +122,9 @@ const putMockSuccessfulBlobUpload = (url: string): object => { const putMockFailure = (): object => { // Simulate fails upload of all blobs & manifest return { + text() { + return 'Failed the put request' + }, status: 500 } } @@ -118,6 +133,9 @@ const putMockFailureManifestUpload = (url: string): object => { // Simulate unsuccessful upload of all blobs & then the manifest if (url.includes('manifest')) { return { + text() { + return 'Failed the put request' + }, status: 500 } } diff --git a/badges/coverage.svg b/badges/coverage.svg index e9318f9..369b184 100644 --- a/badges/coverage.svg +++ b/badges/coverage.svg @@ -1 +1 @@ -Coverage: 96.95%Coverage96.95% \ No newline at end of file +Coverage: 97%Coverage97% \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 3cc7b96..04f9bec 100644 --- a/dist/index.js +++ b/dist/index.js @@ -104749,7 +104749,8 @@ async function uploadLayer(layer, file, registryURL, checkBlobEndpoint, uploadBl return; } if (checkExistsResponse.status !== 404) { - throw new Error(`Unexpected response from blob check for layer ${layer.digest}: ${checkExistsResponse.status} ${checkExistsResponse.statusText}`); + const responseBody = await checkExistsResponse.text(); + throw new Error(`Unexpected response from blob check for layer ${layer.digest}: ${checkExistsResponse.status}. Response Body: ${responseBody}.`); } core.info(`Uploading layer ${layer.digest}.`); const initiateUploadResponse = await fetchWithDebug(uploadBlobEndpoint, { @@ -104760,8 +104761,9 @@ async function uploadLayer(layer, file, registryURL, checkBlobEndpoint, uploadBl body: JSON.stringify(layer) }); if (initiateUploadResponse.status !== 202) { - core.error(`Unexpected response from upload post ${uploadBlobEndpoint}: ${initiateUploadResponse.status}`); - throw new Error(`Unexpected response from POST upload ${initiateUploadResponse.status}`); + const responseBody = await initiateUploadResponse.text(); + core.error(`Unexpected response from upload post ${uploadBlobEndpoint}: ${initiateUploadResponse.status}. Response Body: ${responseBody}.`); + throw new Error(`Unexpected response from POST upload ${initiateUploadResponse.status}. Response Body: ${responseBody}.`); } const locationResponseHeader = initiateUploadResponse.headers.get('location'); if (locationResponseHeader === undefined) { @@ -104788,7 +104790,8 @@ async function uploadLayer(layer, file, registryURL, checkBlobEndpoint, uploadBl body: data }); if (putResponse.status !== 201) { - throw new Error(`Unexpected response from PUT upload ${putResponse.status} for layer ${layer.digest}`); + const responseBody = await putResponse.text(); + throw new Error(`Unexpected response from PUT upload ${putResponse.status} for layer ${layer.digest}. Response Body: ${responseBody}.`); } } // Uploads the manifest and returns the digest returned by GHCR @@ -104803,7 +104806,8 @@ async function uploadManifest(manifestJSON, manifestEndpoint, b64Token) { body: manifestJSON }); if (putResponse.status !== 201) { - throw new Error(`Unexpected response from PUT manifest ${putResponse.status}`); + const responseBody = await putResponse.text(); + throw new Error(`Unexpected response from PUT manifest ${putResponse.status}. Response Body: ${responseBody}.`); } const digestResponseHeader = putResponse.headers.get('docker-content-digest'); if (digestResponseHeader === undefined || digestResponseHeader === null) { diff --git a/src/ghcr-client.ts b/src/ghcr-client.ts index 6aa4c0e..47536df 100644 --- a/src/ghcr-client.ts +++ b/src/ghcr-client.ts @@ -107,8 +107,10 @@ async function uploadLayer( } if (checkExistsResponse.status !== 404) { + const responseBody = await checkExistsResponse.text() + throw new Error( - `Unexpected response from blob check for layer ${layer.digest}: ${checkExistsResponse.status} ${checkExistsResponse.statusText}` + `Unexpected response from blob check for layer ${layer.digest}: ${checkExistsResponse.status}. Response Body: ${responseBody}.` ) } @@ -123,11 +125,13 @@ async function uploadLayer( }) if (initiateUploadResponse.status !== 202) { + const responseBody = await initiateUploadResponse.text() + core.error( - `Unexpected response from upload post ${uploadBlobEndpoint}: ${initiateUploadResponse.status}` + `Unexpected response from upload post ${uploadBlobEndpoint}: ${initiateUploadResponse.status}. Response Body: ${responseBody}.` ) throw new Error( - `Unexpected response from POST upload ${initiateUploadResponse.status}` + `Unexpected response from POST upload ${initiateUploadResponse.status}. Response Body: ${responseBody}.` ) } @@ -161,8 +165,10 @@ async function uploadLayer( }) if (putResponse.status !== 201) { + const responseBody = await putResponse.text() + throw new Error( - `Unexpected response from PUT upload ${putResponse.status} for layer ${layer.digest}` + `Unexpected response from PUT upload ${putResponse.status} for layer ${layer.digest}. Response Body: ${responseBody}.` ) } } @@ -185,8 +191,10 @@ async function uploadManifest( }) if (putResponse.status !== 201) { + const responseBody = await putResponse.text() + throw new Error( - `Unexpected response from PUT manifest ${putResponse.status}` + `Unexpected response from PUT manifest ${putResponse.status}. Response Body: ${responseBody}.` ) }