From 6b31c8421eb5b06fe48a3b07dc92b42154b0f40f Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 7 Nov 2019 07:42:16 +0100 Subject: [PATCH] build: check quality frozen state --- build/azure-pipelines/common/releaseBuild.ts | 35 +++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/build/azure-pipelines/common/releaseBuild.ts b/build/azure-pipelines/common/releaseBuild.ts index 13d40a960e5..ac49e7b0042 100644 --- a/build/azure-pipelines/common/releaseBuild.ts +++ b/build/azure-pipelines/common/releaseBuild.ts @@ -17,13 +17,46 @@ function getEnv(name: string): string { return result; } +interface Config { + id: string; + frozen: boolean; +} + +function createDefaultConfig(quality: string): Config { + return { + id: quality, + frozen: false + }; +} + +async function getConfig(client: CosmosClient, quality: string): Promise { + const query = `SELECT TOP 1 * FROM c WHERE c.id = "${quality}"`; + + const res = await client.database('builds').container('config').items.query(query).fetchAll(); + + if (res.resources.length === 0) { + return createDefaultConfig(quality); + } + + return res.resources[0] as Config; +} + async function main(): Promise { const commit = getEnv('BUILD_SOURCEVERSION'); const quality = getEnv('VSCODE_QUALITY'); + const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] }); + const config = await getConfig(client, quality); + + console.log('Quality config:', config); + + if (config.frozen) { + console.log(`Skipping release because quality ${quality} is frozen.`); + return; + } + console.log(`Releasing build ${commit}...`); - const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] }); const scripts = client.database('builds').container(quality).scripts; await scripts.storedProcedure('releaseBuild').execute('', [commit]); }