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:
parent
3989e4b325
commit
0a76e4214a
@ -281,53 +281,65 @@ export const release = async (
|
|||||||
});
|
});
|
||||||
return release.data;
|
return release.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.status === 404) {
|
if (error.status !== 404) {
|
||||||
const tag_name = tag;
|
|
||||||
const name = config.input_name || tag;
|
|
||||||
const body = releaseBody(config);
|
|
||||||
const draft = config.input_draft;
|
|
||||||
const prerelease = config.input_prerelease;
|
|
||||||
const target_commitish = config.input_target_commitish;
|
|
||||||
const make_latest = config.input_make_latest;
|
|
||||||
let commitMessage: string = "";
|
|
||||||
if (target_commitish) {
|
|
||||||
commitMessage = ` using commit "${target_commitish}"`;
|
|
||||||
}
|
|
||||||
console.log(
|
|
||||||
`👩🏭 Creating new GitHub release for tag ${tag_name}${commitMessage}...`
|
|
||||||
);
|
|
||||||
try {
|
|
||||||
let release = await releaser.createRelease({
|
|
||||||
owner,
|
|
||||||
repo,
|
|
||||||
tag_name,
|
|
||||||
name,
|
|
||||||
body,
|
|
||||||
draft,
|
|
||||||
prerelease,
|
|
||||||
target_commitish,
|
|
||||||
discussion_category_name,
|
|
||||||
generate_release_notes,
|
|
||||||
make_latest,
|
|
||||||
});
|
|
||||||
return release.data;
|
|
||||||
} catch (error) {
|
|
||||||
// presume a race with competing metrix runs
|
|
||||||
console.log(error.response.data);
|
|
||||||
console.log(
|
|
||||||
`⚠️ GitHub release failed with status: ${
|
|
||||||
error.status
|
|
||||||
}\n${JSON.stringify(error.response.data.errors)}\nretrying... (${
|
|
||||||
maxRetries - 1
|
|
||||||
} retries remaining)`
|
|
||||||
);
|
|
||||||
return release(config, releaser, maxRetries - 1);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log(
|
console.log(
|
||||||
`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`
|
`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`
|
||||||
);
|
);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const tag_name = tag;
|
||||||
|
const name = config.input_name || tag;
|
||||||
|
const body = releaseBody(config);
|
||||||
|
const draft = config.input_draft;
|
||||||
|
const prerelease = config.input_prerelease;
|
||||||
|
const target_commitish = config.input_target_commitish;
|
||||||
|
const make_latest = config.input_make_latest;
|
||||||
|
let commitMessage: string = "";
|
||||||
|
if (target_commitish) {
|
||||||
|
commitMessage = ` using commit "${target_commitish}"`;
|
||||||
|
}
|
||||||
|
console.log(
|
||||||
|
`👩🏭 Creating new GitHub release for tag ${tag_name}${commitMessage}...`
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
let release = await releaser.createRelease({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
tag_name,
|
||||||
|
name,
|
||||||
|
body,
|
||||||
|
draft,
|
||||||
|
prerelease,
|
||||||
|
target_commitish,
|
||||||
|
discussion_category_name,
|
||||||
|
generate_release_notes,
|
||||||
|
make_latest,
|
||||||
|
});
|
||||||
|
return release.data;
|
||||||
|
} catch (error) {
|
||||||
|
// presume a race with competing matrix runs
|
||||||
|
console.log(`⚠️ GitHub release failed with status: ${error.status}`);
|
||||||
|
console.log(`${JSON.stringify(error.response.data)}`);
|
||||||
|
|
||||||
|
switch (error.status) {
|
||||||
|
case 403:
|
||||||
|
console.log(
|
||||||
|
"Skip retry — your GitHub token/PAT does not have the required permission to create a release"
|
||||||
|
);
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user