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