mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Retry publish and always try adding asset (#13700)
* Retry publish and always try adding asset * Undo asset upload change * Add logging
This commit is contained in:
@@ -112,7 +112,7 @@ function createOrUpdate(commit: string, quality: string, platform: string, type:
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise<void>((c, e) => {
|
return retry(() => new Promise<void>((c, e) => {
|
||||||
client.createDocument(collection, release, err => {
|
client.createDocument(collection, release, err => {
|
||||||
if (err && err.code === 409) { return c(update()); }
|
if (err && err.code === 409) { return c(update()); }
|
||||||
if (err) { return e(err); }
|
if (err) { return e(err); }
|
||||||
@@ -120,7 +120,7 @@ function createOrUpdate(commit: string, quality: string, platform: string, type:
|
|||||||
console.log('Build successfully published.');
|
console.log('Build successfully published.');
|
||||||
c();
|
c();
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function assertContainer(blobService: azure.BlobService, quality: string): Promise<void> {
|
async function assertContainer(blobService: azure.BlobService, quality: string): Promise<void> {
|
||||||
@@ -188,7 +188,6 @@ async function publish(commit: string, quality: string, platform: string, type:
|
|||||||
console.log(`Blob ${quality}, ${blobName} already exists, not publishing again.`);
|
console.log(`Blob ${quality}, ${blobName} already exists, not publishing again.`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('Uploading blobs to Azure storage...');
|
console.log('Uploading blobs to Azure storage...');
|
||||||
|
|
||||||
await uploadBlob(blobService, quality, blobName, file);
|
await uploadBlob(blobService, quality, blobName, file);
|
||||||
@@ -247,6 +246,22 @@ async function publish(commit: string, quality: string, platform: string, type:
|
|||||||
await createOrUpdate(commit, quality, platform, type, release, asset, isUpdate);
|
await createOrUpdate(commit, quality, platform, type, release, asset, isUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const RETRY_TIMES = 10;
|
||||||
|
async function retry<T>(fn: () => Promise<T>): Promise<T> {
|
||||||
|
for (let run = 1; run <= RETRY_TIMES; run++) {
|
||||||
|
try {
|
||||||
|
return await fn();
|
||||||
|
} catch (err) {
|
||||||
|
if (!/ECONNRESET/.test(err.message)) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.warn(`Caught error ${err} - ${run}/${RETRY_TIMES}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error('Retried too many times');
|
||||||
|
}
|
||||||
|
|
||||||
function main(): void {
|
function main(): void {
|
||||||
const commit = process.env['BUILD_SOURCEVERSION'];
|
const commit = process.env['BUILD_SOURCEVERSION'];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user