From 0ead8a5bd322e80c41d9d488e1f6d5bd19dab22a Mon Sep 17 00:00:00 2001 From: shiyingchen Date: Fri, 14 Feb 2025 17:23:37 +0800 Subject: [PATCH 1/3] use client-id for mi login --- src/Cli/AzureCliLogin.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Cli/AzureCliLogin.ts b/src/Cli/AzureCliLogin.ts index 2c4c5f8f0..ce311e637 100644 --- a/src/Cli/AzureCliLogin.ts +++ b/src/Cli/AzureCliLogin.ts @@ -8,6 +8,7 @@ export class AzureCliLogin { loginConfig: LoginConfig; azPath: string; loginOptions: ExecOptions; + azVersion: string; constructor(loginConfig: LoginConfig) { this.loginConfig = loginConfig; @@ -30,6 +31,7 @@ export class AzureCliLogin { await this.executeAzCliCommand(["version"], true, execOptions); core.debug(`Azure CLI version used:\n${output}`); + this.azVersion = JSON.parse(output)["azure-cli"]; await this.registerAzurestackEnvIfNecessary(); @@ -108,7 +110,14 @@ export class AzureCliLogin { } async loginWithUserAssignedIdentity(args: string[]) { - args.push("--username", this.loginConfig.servicePrincipalId); + const azcliMinorVersion = parseInt(this.azVersion.split('.')[1], 10); + //From Azure-cli v2.69.0, `--username` is replaced with `--client-id`, `--object-id` or `--resource-id`: https://github.com/Azure/azure-cli/pull/30525 + if (azcliMinorVersion < 69) { + args.push("--username", this.loginConfig.servicePrincipalId); + } + else { + args.push("--client-id", this.loginConfig.servicePrincipalId); + } await this.callCliLogin(args, 'user-assigned managed identity'); } From 07c8f4429a579b1eb711c7fb99f28f27f19b82fd Mon Sep 17 00:00:00 2001 From: shiyingchen Date: Mon, 3 Mar 2025 12:59:04 +0800 Subject: [PATCH 2/3] update --- src/Cli/AzureCliLogin.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Cli/AzureCliLogin.ts b/src/Cli/AzureCliLogin.ts index ce311e637..8f0a3f2ff 100644 --- a/src/Cli/AzureCliLogin.ts +++ b/src/Cli/AzureCliLogin.ts @@ -31,8 +31,12 @@ export class AzureCliLogin { await this.executeAzCliCommand(["version"], true, execOptions); core.debug(`Azure CLI version used:\n${output}`); - this.azVersion = JSON.parse(output)["azure-cli"]; - + try { + this.azVersion = JSON.parse(output)["azure-cli"]; + } + catch (error) { + core.warning("Failed to parse Azure CLI version."); + } await this.registerAzurestackEnvIfNecessary(); await this.executeAzCliCommand(["cloud", "set", "-n", this.loginConfig.environment], false); From a3a8ebd57dc58134231e30f0b23435c0547d2a57 Mon Sep 17 00:00:00 2001 From: shiyingchen Date: Mon, 3 Mar 2025 14:12:30 +0800 Subject: [PATCH 3/3] update --- src/Cli/AzureCliLogin.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Cli/AzureCliLogin.ts b/src/Cli/AzureCliLogin.ts index 8f0a3f2ff..aa3a95ece 100644 --- a/src/Cli/AzureCliLogin.ts +++ b/src/Cli/AzureCliLogin.ts @@ -114,7 +114,13 @@ export class AzureCliLogin { } async loginWithUserAssignedIdentity(args: string[]) { - const azcliMinorVersion = parseInt(this.azVersion.split('.')[1], 10); + let azcliMinorVersion = 0; + try { + azcliMinorVersion = parseInt(this.azVersion.split('.')[1], 10); + } + catch (error) { + core.warning("Failed to parse the minor version of Azure CLI. Assuming the version is less than 2.69.0"); + } //From Azure-cli v2.69.0, `--username` is replaced with `--client-id`, `--object-id` or `--resource-id`: https://github.com/Azure/azure-cli/pull/30525 if (azcliMinorVersion < 69) { args.push("--username", this.loginConfig.servicePrincipalId);