Skip to content

Commit 7df4852

Browse files
authored
Reuse az login output result to detect id version supports "--certificate" param or not (#20701)
* Reuse az login output result. * Fix typo
1 parent f23b101 commit 7df4852

File tree

10 files changed

+49
-34
lines changed

10 files changed

+49
-34
lines changed

Tasks/AzureCLIV2/azureclitask.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import path = require("path");
22
import tl = require("azure-pipelines-task-lib/task");
33
import fs = require("fs");
4+
import { IExecSyncResult } from 'azure-pipelines-task-lib/toolrunner';
45
import { Utility } from "./src/Utility";
56
import { ScriptType, ScriptTypeFactory } from "./src/ScriptType";
67
import { getSystemAccessToken } from 'azure-pipelines-tasks-artifacts-common/webapi';
@@ -49,7 +50,11 @@ export class azureclitask {
4950
var failOnStdErr: boolean = tl.getBoolInput("failOnStandardError", false);
5051
tl.mkdirP(cwd);
5152
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+
5358
// set az cli config dir
5459
this.setConfigDirectory();
5560
this.setAzureCloudBasedOnServiceEndpoint();
@@ -192,14 +197,14 @@ export class azureclitask {
192197
private static servicePrincipalKey: string = null;
193198
private static federatedToken: string = null;
194199
private static tenantId: string = null;
200+
private static isSupportCertificateParameter: boolean = false;
195201

196-
private static isAzVersionGreaterOrEqual(versionToCompare) {
202+
private static isAzVersionGreaterOrEqual(azVersionResultOutput, versionToCompare) {
197203
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+)/);
200205

201206
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}`);
203208
return false;
204209
}
205210

@@ -263,7 +268,7 @@ export class azureclitask {
263268

264269
if (authType == "spnCertificate") {
265270
tl.debug('certificate based endpoint');
266-
if(azureclitask.isAzVersionGreaterOrEqual("2.66.0")) {
271+
if(this.isSupportCertificateParameter) {
267272
authParam = "--certificate";
268273
}
269274
let certificateContent: string = tl.getEndpointAuthorizationParameter(connectedService, "servicePrincipalCertificate", false);

Tasks/AzureCLIV2/task.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"version": {
2121
"Major": 2,
2222
"Minor": 249,
23-
"Patch": 5
23+
"Patch": 7
2424
},
2525
"minimumAgentVersion": "2.0.0",
2626
"instanceNameFormat": "Azure CLI $(scriptPath)",

Tasks/AzureCLIV2/task.loc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"version": {
2121
"Major": 2,
2222
"Minor": 249,
23-
"Patch": 5
23+
"Patch": 7
2424
},
2525
"minimumAgentVersion": "2.0.0",
2626
"instanceNameFormat": "ms-resource:loc.instanceNameFormat",

_generated/AzureCLIV2.versionmap.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Default|2.249.5
2-
Node20_229_2|2.249.6
1+
Default|2.249.7
2+
Node20_229_2|2.249.8

_generated/AzureCLIV2/azureclitask.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import path = require("path");
22
import tl = require("azure-pipelines-task-lib/task");
33
import fs = require("fs");
4+
import { IExecSyncResult } from 'azure-pipelines-task-lib/toolrunner';
45
import { Utility } from "./src/Utility";
56
import { ScriptType, ScriptTypeFactory } from "./src/ScriptType";
67
import { getSystemAccessToken } from 'azure-pipelines-tasks-artifacts-common/webapi';
@@ -37,7 +38,11 @@ export class azureclitask {
3738
var failOnStdErr: boolean = tl.getBoolInput("failOnStandardError", false);
3839
tl.mkdirP(cwd);
3940
tl.cd(cwd);
40-
Utility.throwIfError(tl.execSync("az", "--version"));
41+
42+
const azVersionResult: IExecSyncResult = tl.execSync("az", "--version");
43+
Utility.throwIfError(azVersionResult);
44+
this.isSupportCertificateParameter = this.isAzVersionGreaterOrEqual(azVersionResult.stdout, "2.66.0");
45+
4146
// set az cli config dir
4247
this.setConfigDirectory();
4348
this.setAzureCloudBasedOnServiceEndpoint();
@@ -180,14 +185,14 @@ export class azureclitask {
180185
private static servicePrincipalKey: string = null;
181186
private static federatedToken: string = null;
182187
private static tenantId: string = null;
188+
private static isSupportCertificateParameter: boolean = false;
183189

184-
private static isAzVersionGreaterOrEqual(versionToCompare) {
190+
private static isAzVersionGreaterOrEqual(azVersionResultOutput, versionToCompare) {
185191
try {
186-
const result = tl.execSync("az", "--version");
187-
const versionMatch = result.stdout.match(/azure-cli\s+(\d+\.\d+\.\d+)/);
192+
const versionMatch = azVersionResultOutput.match(/azure-cli\s+(\d+\.\d+\.\d+)/);
188193

189194
if (!versionMatch || versionMatch.length < 2) {
190-
tl.error(`Can't parse az version from: ${result}`);
195+
tl.error(`Can't parse az version from: ${azVersionResultOutput}`);
191196
return false;
192197
}
193198

@@ -251,7 +256,7 @@ export class azureclitask {
251256

252257
if (authType == "spnCertificate") {
253258
tl.debug('certificate based endpoint');
254-
if(azureclitask.isAzVersionGreaterOrEqual("2.66.0")) {
259+
if(this.isSupportCertificateParameter) {
255260
authParam = "--certificate";
256261
}
257262
let certificateContent: string = tl.getEndpointAuthorizationParameter(connectedService, "servicePrincipalCertificate", false);

_generated/AzureCLIV2/task.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"version": {
2121
"Major": 2,
2222
"Minor": 249,
23-
"Patch": 5
23+
"Patch": 7
2424
},
2525
"minimumAgentVersion": "2.0.0",
2626
"instanceNameFormat": "Azure CLI $(scriptPath)",
@@ -226,7 +226,7 @@
226226
"KeepingAzSessionActiveUnsupportedScheme": "The 'keepAzSessionActive' input might be used only for workload identity federation ARM service connection. The referenced service endpoint auth scheme was unexpected: %s. Change the scheme or remove 'keepAzSessionActive' input."
227227
},
228228
"_buildConfigMapping": {
229-
"Default": "2.249.5",
230-
"Node20_229_2": "2.249.6"
229+
"Default": "2.249.7",
230+
"Node20_229_2": "2.249.8"
231231
}
232232
}

_generated/AzureCLIV2/task.loc.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"version": {
2121
"Major": 2,
2222
"Minor": 249,
23-
"Patch": 5
23+
"Patch": 7
2424
},
2525
"minimumAgentVersion": "2.0.0",
2626
"instanceNameFormat": "ms-resource:loc.instanceNameFormat",
@@ -226,7 +226,7 @@
226226
"KeepingAzSessionActiveUnsupportedScheme": "ms-resource:loc.messages.KeepingAzSessionActiveUnsupportedScheme"
227227
},
228228
"_buildConfigMapping": {
229-
"Default": "2.249.5",
230-
"Node20_229_2": "2.249.6"
229+
"Default": "2.249.7",
230+
"Node20_229_2": "2.249.8"
231231
}
232232
}

_generated/AzureCLIV2_Node20/azureclitask.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import path = require("path");
22
import tl = require("azure-pipelines-task-lib/task");
33
import fs = require("fs");
4+
import { IExecSyncResult } from 'azure-pipelines-task-lib/toolrunner';
45
import { Utility } from "./src/Utility";
56
import { ScriptType, ScriptTypeFactory } from "./src/ScriptType";
67
import { getSystemAccessToken } from 'azure-pipelines-tasks-artifacts-common/webapi';
@@ -47,7 +48,11 @@ export class azureclitask {
4748
var failOnStdErr: boolean = tl.getBoolInput("failOnStandardError", false);
4849
tl.mkdirP(cwd);
4950
tl.cd(cwd);
50-
Utility.throwIfError(tl.execSync("az", "--version"));
51+
52+
const azVersionResult: IExecSyncResult = tl.execSync("az", "--version");
53+
Utility.throwIfError(azVersionResult);
54+
this.isSupportCertificateParameter = this.isAzVersionGreaterOrEqual(azVersionResult.stdout, "2.66.0");
55+
5156
// set az cli config dir
5257
this.setConfigDirectory();
5358
this.setAzureCloudBasedOnServiceEndpoint();
@@ -190,14 +195,14 @@ export class azureclitask {
190195
private static servicePrincipalKey: string = null;
191196
private static federatedToken: string = null;
192197
private static tenantId: string = null;
198+
private static isSupportCertificateParameter: boolean = false;
193199

194-
private static isAzVersionGreaterOrEqual(versionToCompare) {
200+
private static isAzVersionGreaterOrEqual(azVersionResultOutput, versionToCompare) {
195201
try {
196-
const result = tl.execSync("az", "--version");
197-
const versionMatch = result.stdout.match(/azure-cli\s+(\d+\.\d+\.\d+)/);
202+
const versionMatch = azVersionResultOutput.match(/azure-cli\s+(\d+\.\d+\.\d+)/);
198203

199204
if (!versionMatch || versionMatch.length < 2) {
200-
tl.error(`Can't parse az version from: ${result}`);
205+
tl.error(`Can't parse az version from: ${azVersionResultOutput}`);
201206
return false;
202207
}
203208

@@ -261,7 +266,7 @@ export class azureclitask {
261266

262267
if (authType == "spnCertificate") {
263268
tl.debug('certificate based endpoint');
264-
if(azureclitask.isAzVersionGreaterOrEqual("2.66.0")) {
269+
if(this.isSupportCertificateParameter) {
265270
authParam = "--certificate";
266271
}
267272
let certificateContent: string = tl.getEndpointAuthorizationParameter(connectedService, "servicePrincipalCertificate", false);

_generated/AzureCLIV2_Node20/task.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"version": {
2121
"Major": 2,
2222
"Minor": 249,
23-
"Patch": 6
23+
"Patch": 8
2424
},
2525
"minimumAgentVersion": "2.0.0",
2626
"instanceNameFormat": "Azure CLI $(scriptPath)",
@@ -230,7 +230,7 @@
230230
"KeepingAzSessionActiveUnsupportedScheme": "The 'keepAzSessionActive' input might be used only for workload identity federation ARM service connection. The referenced service endpoint auth scheme was unexpected: %s. Change the scheme or remove 'keepAzSessionActive' input."
231231
},
232232
"_buildConfigMapping": {
233-
"Default": "2.249.5",
234-
"Node20_229_2": "2.249.6"
233+
"Default": "2.249.7",
234+
"Node20_229_2": "2.249.8"
235235
}
236236
}

_generated/AzureCLIV2_Node20/task.loc.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"version": {
2121
"Major": 2,
2222
"Minor": 249,
23-
"Patch": 6
23+
"Patch": 8
2424
},
2525
"minimumAgentVersion": "2.0.0",
2626
"instanceNameFormat": "ms-resource:loc.instanceNameFormat",
@@ -230,7 +230,7 @@
230230
"KeepingAzSessionActiveUnsupportedScheme": "ms-resource:loc.messages.KeepingAzSessionActiveUnsupportedScheme"
231231
},
232232
"_buildConfigMapping": {
233-
"Default": "2.249.5",
234-
"Node20_229_2": "2.249.6"
233+
"Default": "2.249.7",
234+
"Node20_229_2": "2.249.8"
235235
}
236236
}

0 commit comments

Comments
 (0)