code-diff-coverage/UpdateBuildProperties/index.ts (63 lines of code) (raw):

import azdev=require("azure-devops-node-api"); import azTask = require('azure-pipelines-task-lib/task'); import azBuild = require("azure-devops-node-api/BuildApi"); import fs = require('fs'); async function getconnection(){ const accessToken = azTask.getEndpointAuthorizationParameter('SystemVssConnection', 'AccessToken', false); const collectionUri = azTask.getVariable('System.TeamFoundationCollectionUri'); const buildId = azTask.getVariable('Build.BuildId'); const projectId = azTask.getVariable('System.TeamProjectId'); if (collectionUri == undefined){ console.error(`The collectionUri is empty.`); return undefined; } if (accessToken == undefined){ console.error(`The AccessToken is empty.`); return undefined; } var authHandler = azdev.getPersonalAccessTokenHandler(accessToken); var connection = new azdev.WebApi(collectionUri, authHandler); return connection; } async function run() { try { const properties: string | undefined = azTask.getInput('properties'); const inputFile: string | undefined = azTask.getInput('inputFile'); const accessToken = azTask.getEndpointAuthorizationParameter('SystemVssConnection', 'AccessToken', false); const collectionUri = azTask.getVariable('System.TeamFoundationCollectionUri'); const buildId = azTask.getVariable('Build.BuildId'); const projectId = azTask.getVariable('System.TeamProjectId'); if (!properties && !inputFile){ console.info(`Skipped for no properties or inputFile set`); return; } var jsonProperties = {}; if (properties){ jsonProperties = JSON.parse(properties); } else{ jsonProperties = JSON.parse(fs.readFileSync(inputFile!, 'utf8')); } if (buildId == undefined){ console.error(`The buildId is empty.`); return undefined; } if (projectId == undefined){ console.error(`The projectId is empty.`); return undefined; } var buildNumber = Number(buildId); var connection = await getconnection(); if (connection == undefined){ azTask.setResult(azTask.TaskResult.Failed, "Failed to create connection."); return; } var build = await connection.getBuildApi(); await build.updateBuildProperties(null, jsonProperties, projectId, buildNumber); console.log(`Update the build properties sucessfully.`); } catch (err) { azTask.setResult(azTask.TaskResult.Failed, err.message); } } run();