diff --git a/build/gulpfile.mixin.js b/build/gulpfile.mixin.js index 6aff18e9a1..e1d568840d 100644 --- a/build/gulpfile.mixin.js +++ b/build/gulpfile.mixin.js @@ -6,21 +6,14 @@ 'use strict'; const gulp = require('gulp'); -const json = require('gulp-json-editor'); -const buffer = require('gulp-buffer'); -const filter = require('gulp-filter'); -const es = require('event-stream'); -const util = require('./lib/util'); -const remote = require('gulp-remote-src'); -const zip = require('gulp-vinyl-zip'); -const assign = require('object-assign'); -const pkg = require('../package.json'); +// {{SQL CARBON EDIT}} +const jeditor = require('gulp-json-editor'); gulp.task('mixin', function () { - const repo = process.env['VSCODE_MIXIN_REPO']; - - if (!repo) { - console.log('Missing VSCODE_MIXIN_REPO, skipping mixin'); + // {{SQL CARBON EDIT}} + const updateUrl = process.env['SQLOPS_UPDATEURL']; + if (!updateUrl) { + console.log('Missing SQLOPS_UPDATEURL, skipping mixin'); return; } @@ -31,39 +24,13 @@ gulp.task('mixin', function () { return; } - const url = `https://github.com/${repo}/archive/${pkg.distro}.zip`; - const opts = { base: url }; - const username = process.env['VSCODE_MIXIN_USERNAME']; - const password = process.env['VSCODE_MIXIN_PASSWORD']; + // {{SQL CARBON EDIT}} + let newValues = { + "updateUrl": updateUrl, + "quality": quality + }; - if (username || password) { - opts.auth = { user: username || '', pass: password || '' }; - } - - console.log('Mixing in sources from \'' + url + '\':'); - - let all = remote('', opts) - .pipe(zip.src()) - .pipe(filter(function (f) { return !f.isDirectory(); })) - .pipe(util.rebase(1)); - - if (quality) { - const productJsonFilter = filter('product.json', { restore: true }); - const mixin = all - .pipe(filter(['quality/' + quality + '/**'])) - .pipe(util.rebase(2)) - .pipe(productJsonFilter) - .pipe(buffer()) - .pipe(json(o => assign({}, require('../product.json'), o))) - .pipe(productJsonFilter.restore); - - all = es.merge(mixin); - } - - return all - .pipe(es.mapSync(function (f) { - console.log(f.relative); - return f; - })) + return gulp.src('./product.json') + .pipe(jeditor(newValues)) .pipe(gulp.dest('.')); }); \ No newline at end of file diff --git a/build/tfs/common/publish.ts b/build/tfs/common/publish.ts index 5c43f4d074..f03132b7cd 100644 --- a/build/tfs/common/publish.ts +++ b/build/tfs/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); } @@ -183,21 +184,10 @@ 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; - - await Promise.all([ - assertContainer(blobService, quality), - assertContainer(mooncakeBlobService, quality) - ]); - - const [blobExists, moooncakeBlobExists] = await Promise.all([ - doesAssetExist(blobService, quality, blobName), - doesAssetExist(mooncakeBlobService, quality, blobName) - ]); + const blobExists = await doesAssetExist(blobService, quality, blobName); const promises = []; @@ -205,8 +195,23 @@ async function publish(commit: string, quality: string, platform: string, type: 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 assertContainer(mooncakeBlobService, quality); + + const mooncakeBlobExists = await doesAssetExist(mooncakeBlobService, quality, blobName); + + if (!mooncakeBlobExists) { + promises.push(uploadBlob(mooncakeBlobService, quality, blobName, file)); + } + } else { + console.log('Skipping Mooncake publishing.'); } if (promises.length === 0) { @@ -228,7 +233,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 @@ -261,8 +267,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);