From 51cf2df2f8e5c30ca83c5b410898ae69e04fd545 Mon Sep 17 00:00:00 2001 From: Matt Irvine Date: Fri, 22 Feb 2019 15:52:10 -0800 Subject: [PATCH] Reapply changes to publish.ts script (#4138) --- build/azure-pipelines/common/publish.ts | 68 ++++++++++++++++--------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/build/azure-pipelines/common/publish.ts b/build/azure-pipelines/common/publish.ts index 71187b4e9d..f094e264f9 100644 --- a/build/azure-pipelines/common/publish.ts +++ b/build/azure-pipelines/common/publish.ts @@ -14,8 +14,9 @@ import * as mime from 'mime'; import * as minimist from 'minimist'; import { DocumentClient, NewDocument } from 'documentdb'; -if (process.argv.length < 6) { - console.error('Usage: node publish.js '); +// {{SQL CARBON EDIT}} +if (process.argv.length < 9) { + console.error('Usage: node publish.js [commit_id]'); process.exit(-1); } @@ -65,7 +66,8 @@ interface Asset { platform: string; type: string; url: string; - mooncakeUrl: string; + // {{SQL CARBON EDIT}} + mooncakeUrl: string | undefined; hash: string; sha256hash: string; size: number; @@ -184,30 +186,46 @@ async function publish(commit: string, quality: string, platform: string, type: const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2']!) .withFilter(new azure.ExponentialRetryPolicyFilter(20)); - const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY']!, `${storageAccount}.blob.core.chinacloudapi.cn`) - .withFilter(new azure.ExponentialRetryPolicyFilter(20)); + // {{SQL CARBON EDIT}} + await assertContainer(blobService, quality); - // mooncake is fussy and far away, this is needed! - mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000; + const blobExists = await doesAssetExist(blobService, quality, blobName); - await Promise.all([ - assertContainer(blobService, quality), - assertContainer(mooncakeBlobService, quality) - ]); - - const [blobExists, moooncakeBlobExists] = await Promise.all([ - doesAssetExist(blobService, quality, blobName), - doesAssetExist(mooncakeBlobService, quality, blobName) - ]); - - const promises: Array> = []; + const promises = []; if (!blobExists) { promises.push(uploadBlob(blobService, quality, blobName, file)); } - if (!moooncakeBlobExists) { - promises.push(uploadBlob(mooncakeBlobService, quality, blobName, file)); + // {{SQL CARBON EDIT}} + if (process.env['MOONCAKE_STORAGE_ACCESS_KEY']) { + const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY']!, `${storageAccount}.blob.core.chinacloudapi.cn`) + .withFilter(new azure.ExponentialRetryPolicyFilter(20)); + + // mooncake is fussy and far away, this is needed! + mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000; + + await Promise.all([ + assertContainer(blobService, quality), + assertContainer(mooncakeBlobService, quality) + ]); + + const [blobExists, moooncakeBlobExists] = await Promise.all([ + doesAssetExist(blobService, quality, blobName), + doesAssetExist(mooncakeBlobService, quality, blobName) + ]); + + const promises: Array> = []; + + if (!blobExists) { + promises.push(uploadBlob(blobService, quality, blobName, file)); + } + + if (!moooncakeBlobExists) { + promises.push(uploadBlob(mooncakeBlobService, quality, blobName, file)); + } + } else { + console.log('Skipping Mooncake publishing.'); } if (promises.length === 0) { @@ -229,7 +247,8 @@ async function publish(commit: string, quality: string, platform: string, type: platform: platform, type: type, url: `${process.env['AZURE_CDN_URL']}/${quality}/${blobName}`, - mooncakeUrl: `${process.env['MOONCAKE_CDN_URL']}/${quality}/${blobName}`, + // {{SQL CARBON EDIT}} + mooncakeUrl: process.env['MOONCAKE_CDN_URL'] ? `${process.env['MOONCAKE_CDN_URL']}/${quality}/${blobName}` : undefined, hash: sha1hash, sha256hash, size @@ -274,8 +293,11 @@ function main(): void { boolean: ['upload-only'] }); - const [quality, platform, type, name, version, _isUpdate, file] = opts._; - const commit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim(); + // {{SQL CARBON EDIT}} + let [quality, platform, type, name, version, _isUpdate, file, commit] = opts._; + if (!commit) { + commit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim(); + } publish(commit, quality, platform, type, name, version, _isUpdate, file, opts).catch(err => { console.error(err);