Fix: error handling (#449)

- refactored the big `if/else` to exit early
- added error handling for different errors while creating a release
This commit is contained in:
Till! 2024-05-07 15:21:14 +02:00 committed by GitHub
parent 3989e4b325
commit 0a76e4214a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -281,7 +281,13 @@ export const release = async (
}); });
return release.data; return release.data;
} catch (error) { } catch (error) {
if (error.status === 404) { if (error.status !== 404) {
console.log(
`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`
);
throw error;
}
const tag_name = tag; const tag_name = tag;
const name = config.input_name || tag; const name = config.input_name || tag;
const body = releaseBody(config); const body = releaseBody(config);
@ -312,22 +318,28 @@ export const release = async (
}); });
return release.data; return release.data;
} catch (error) { } catch (error) {
// presume a race with competing metrix runs // presume a race with competing matrix runs
console.log(error.response.data); console.log(`⚠️ GitHub release failed with status: ${error.status}`);
console.log(`${JSON.stringify(error.response.data)}`);
switch (error.status) {
case 403:
console.log( console.log(
`⚠️ GitHub release failed with status: ${ "Skip retry — your GitHub token/PAT does not have the required permission to create a release"
error.status
}\n${JSON.stringify(error.response.data.errors)}\nretrying... (${
maxRetries - 1
} retries remaining)`
);
return release(config, releaser, maxRetries - 1);
}
} else {
console.log(
`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`
); );
throw error; throw error;
case 404:
console.log("Skip retry - discussion category mismatch");
throw error;
case 422:
console.log("Skip retry - validation failed");
throw error;
}
console.log(`retrying... (${maxRetries - 1} retries remaining)`);
return release(config, releaser, maxRetries - 1);
} }
} }
}; };