Retry the entire release process, not just uploading one asset (#989)

Another attempt to mitigate #978
This commit is contained in:
Alex Crichton
2020-02-25 19:46:41 -06:00
committed by GitHub
parent ab213780cd
commit 4b2c56e655

View File

@@ -8,7 +8,7 @@ function sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds)) return new Promise(resolve => setTimeout(resolve, milliseconds))
} }
async function run() { async function runOnce() {
// Load all our inputs and env vars. Note that `getInput` reads from `INPUT_*` // Load all our inputs and env vars. Note that `getInput` reads from `INPUT_*`
const files = core.getInput('files'); const files = core.getInput('files');
const name = core.getInput('name'); const name = core.getInput('name');
@@ -76,28 +76,32 @@ async function run() {
}); });
// Upload all the relevant assets for this release as just general blobs. // Upload all the relevant assets for this release as just general blobs.
const retries = 10;
for (const file of glob.sync(files)) { for (const file of glob.sync(files)) {
const size = fs.statSync(file).size; const size = fs.statSync(file).size;
core.info(`upload ${file}`); core.info(`upload ${file}`);
for (let i = 0; i < retries; i++) { await octokit.repos.uploadReleaseAsset({
try { data: fs.createReadStream(file),
await octokit.repos.uploadReleaseAsset({ headers: { 'content-length': size, 'content-type': 'application/octet-stream' },
data: fs.createReadStream(file), name: path.basename(file),
headers: { 'content-length': size, 'content-type': 'application/octet-stream' }, url: release.data.upload_url,
name: path.basename(file), });
url: release.data.upload_url, }
}); }
break;
} catch (e) { async function run() {
if (i === retries - 1) const retries = 10;
throw e; for (let i = 0; i < retries; i++) {
console.log("ERROR: ", JSON.stringify(e, null, 2)); try {
console.log("ERROR: ", e.message); runOnce();
console.log(e.stack); break;
console.log("RETRYING after 10s"); } catch (e) {
await sleep(10000) if (i === retries - 1)
} throw e;
console.log("ERROR: ", JSON.stringify(e, null, 2));
console.log("ERROR: ", e.message);
console.log(e.stack);
console.log("RETRYING after 10s");
await sleep(10000)
} }
} }
} }