Path: blob/main/build/azure-pipelines/common/releaseBuild.js
3520 views
"use strict";1Object.defineProperty(exports, "__esModule", { value: true });2/*---------------------------------------------------------------------------------------------3* Copyright (c) Microsoft Corporation. All rights reserved.4* Licensed under the MIT License. See License.txt in the project root for license information.5*--------------------------------------------------------------------------------------------*/6const identity_1 = require("@azure/identity");7const cosmos_1 = require("@azure/cosmos");8const retry_1 = require("./retry");9function getEnv(name) {10const result = process.env[name];11if (typeof result === 'undefined') {12throw new Error('Missing env: ' + name);13}14return result;15}16function createDefaultConfig(quality) {17return {18id: quality,19frozen: false20};21}22async function getConfig(client, quality) {23const query = `SELECT TOP 1 * FROM c WHERE c.id = "${quality}"`;24const res = await client.database('builds').container('config').items.query(query).fetchAll();25if (res.resources.length === 0) {26return createDefaultConfig(quality);27}28return res.resources[0];29}30async function main(force) {31const commit = getEnv('BUILD_SOURCEVERSION');32const quality = getEnv('VSCODE_QUALITY');33const aadCredentials = new identity_1.ClientAssertionCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], () => Promise.resolve(process.env['AZURE_ID_TOKEN']));34const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], aadCredentials });35if (!force) {36const config = await getConfig(client, quality);37console.log('Quality config:', config);38if (config.frozen) {39console.log(`Skipping release because quality ${quality} is frozen.`);40return;41}42}43console.log(`Releasing build ${commit}...`);44const scripts = client.database('builds').container(quality).scripts;45await (0, retry_1.retry)(() => scripts.storedProcedure('releaseBuild').execute('', [commit]));46}47const [, , force] = process.argv;48console.log(process.argv);49main(/^true$/i.test(force)).then(() => {50console.log('Build successfully released');51process.exit(0);52}, err => {53console.error(err);54process.exit(1);55});56//# sourceMappingURL=releaseBuild.js.map5758