|
1 | 1 | import path = require("path"); |
2 | 2 | import tl = require("azure-pipelines-task-lib/task"); |
3 | 3 | import fs = require("fs"); |
| 4 | +import { IExecSyncResult } from 'azure-pipelines-task-lib/toolrunner'; |
4 | 5 | import { Utility } from "./src/Utility"; |
5 | 6 | import { ScriptType, ScriptTypeFactory } from "./src/ScriptType"; |
6 | 7 | import { getSystemAccessToken } from 'azure-pipelines-tasks-artifacts-common/webapi'; |
@@ -49,7 +50,11 @@ export class azureclitask { |
49 | 50 | var failOnStdErr: boolean = tl.getBoolInput("failOnStandardError", false); |
50 | 51 | tl.mkdirP(cwd); |
51 | 52 | tl.cd(cwd); |
52 | | - Utility.throwIfError(tl.execSync("az", "--version")); |
| 53 | + |
| 54 | + const azVersionResult: IExecSyncResult = tl.execSync("az", "--version"); |
| 55 | + Utility.throwIfError(azVersionResult); |
| 56 | + this.isSupportCertificateParameter = this.isAzVersionGreaterOrEqual(azVersionResult.stdout, "2.66.0"); |
| 57 | + |
53 | 58 | // set az cli config dir |
54 | 59 | this.setConfigDirectory(); |
55 | 60 | this.setAzureCloudBasedOnServiceEndpoint(); |
@@ -192,14 +197,14 @@ export class azureclitask { |
192 | 197 | private static servicePrincipalKey: string = null; |
193 | 198 | private static federatedToken: string = null; |
194 | 199 | private static tenantId: string = null; |
| 200 | + private static isSupportCertificateParameter: boolean = false; |
195 | 201 |
|
196 | | - private static isAzVersionGreaterOrEqual(versionToCompare) { |
| 202 | + private static isAzVersionGreaterOrEqual(azVersionResultOutput, versionToCompare) { |
197 | 203 | try { |
198 | | - const result = tl.execSync("az", "--version"); |
199 | | - const versionMatch = result.stdout.match(/azure-cli\s+(\d+\.\d+\.\d+)/); |
| 204 | + const versionMatch = azVersionResultOutput.match(/azure-cli\s+(\d+\.\d+\.\d+)/); |
200 | 205 |
|
201 | 206 | if (!versionMatch || versionMatch.length < 2) { |
202 | | - tl.error(`Can't parse az version from: ${result}`); |
| 207 | + tl.error(`Can't parse az version from: ${azVersionResultOutput}`); |
203 | 208 | return false; |
204 | 209 | } |
205 | 210 |
|
@@ -263,7 +268,7 @@ export class azureclitask { |
263 | 268 |
|
264 | 269 | if (authType == "spnCertificate") { |
265 | 270 | tl.debug('certificate based endpoint'); |
266 | | - if(azureclitask.isAzVersionGreaterOrEqual("2.66.0")) { |
| 271 | + if(this.isSupportCertificateParameter) { |
267 | 272 | authParam = "--certificate"; |
268 | 273 | } |
269 | 274 | let certificateContent: string = tl.getEndpointAuthorizationParameter(connectedService, "servicePrincipalCertificate", false); |
|
0 commit comments