mirror of
https://github.com/azure/login.git
synced 2026-03-15 09:20:56 -04:00
Compare commits
1 Commits
sy/improve
...
releases/v
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c251865b4 |
33
.github/workflows/azure-login-negative.yml
vendored
33
.github/workflows/azure-login-negative.yml
vendored
@@ -333,3 +333,36 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('Last action should fail but not. Please check it.')
|
core.setFailed('Last action should fail but not. Please check it.')
|
||||||
|
|
||||||
|
VMTest:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [self_linux, self_windows]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
environment: Automation test
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: 'Checking out repo code'
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set Node.js 20.x for GitHub Action
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20.x
|
||||||
|
|
||||||
|
- name: 'Validate build'
|
||||||
|
run: |
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
- name: Login with system-assigned managed identity without auth-type
|
||||||
|
id: login_14
|
||||||
|
continue-on-error: true
|
||||||
|
uses: ./
|
||||||
|
|
||||||
|
- name: Check Last step failed
|
||||||
|
if: steps.login_14.outcome == 'success'
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.setFailed('Last action should fail but not. Please check it.')
|
||||||
|
|||||||
139
.github/workflows/azure-login-positive.yml
vendored
139
.github/workflows/azure-login-positive.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
|||||||
BasicTest:
|
BasicTest:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
os: [ubuntu-latest, windows-latest, macos-latest, self_linux, self_windows]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
environment: Automation test
|
environment: Automation test
|
||||||
|
|
||||||
@@ -47,11 +47,13 @@ jobs:
|
|||||||
az vm list --output none
|
az vm list --output none
|
||||||
|
|
||||||
- name: Run Azure PowerShell
|
- name: Run Azure PowerShell
|
||||||
uses: azure/powershell@v2
|
uses: azure/powershell@v1
|
||||||
with:
|
with:
|
||||||
azPSVersion: "latest"
|
azPSVersion: "latest"
|
||||||
inlineScript: |
|
inlineScript: |
|
||||||
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
||||||
|
$checkResult = $checkResult -and ((Get-AzResourceGroup -Name GitHubAction_CI_RG).ResourceGroupName -eq 'GitHubAction_CI_RG')
|
||||||
|
$checkResult = $checkResult -and ((Get-AzVM).Count -gt 0)
|
||||||
if(-not $checkResult){
|
if(-not $checkResult){
|
||||||
throw "Not all checks passed!"
|
throw "Not all checks passed!"
|
||||||
}
|
}
|
||||||
@@ -69,7 +71,7 @@ jobs:
|
|||||||
az account show --output none
|
az account show --output none
|
||||||
|
|
||||||
- name: Run Azure PowerShell again
|
- name: Run Azure PowerShell again
|
||||||
uses: azure/powershell@v2
|
uses: azure/powershell@v1
|
||||||
with:
|
with:
|
||||||
azPSVersion: "latest"
|
azPSVersion: "latest"
|
||||||
inlineScript: |
|
inlineScript: |
|
||||||
@@ -92,11 +94,13 @@ jobs:
|
|||||||
az vm list --output none
|
az vm list --output none
|
||||||
|
|
||||||
- name: Run Azure PowerShell
|
- name: Run Azure PowerShell
|
||||||
uses: azure/powershell@v2
|
uses: azure/powershell@v1
|
||||||
with:
|
with:
|
||||||
azPSVersion: "latest"
|
azPSVersion: "latest"
|
||||||
inlineScript: |
|
inlineScript: |
|
||||||
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
||||||
|
$checkResult = $checkResult -and ((Get-AzResourceGroup -Name GitHubAction_CI_RG).ResourceGroupName -eq 'GitHubAction_CI_RG')
|
||||||
|
$checkResult = $checkResult -and ((Get-AzVM).Count -gt 0)
|
||||||
if(-not $checkResult){
|
if(-not $checkResult){
|
||||||
throw "Not all checks passed!"
|
throw "Not all checks passed!"
|
||||||
}
|
}
|
||||||
@@ -160,11 +164,13 @@ jobs:
|
|||||||
az vm list --output none
|
az vm list --output none
|
||||||
|
|
||||||
- name: Run Azure PowerShell
|
- name: Run Azure PowerShell
|
||||||
uses: azure/powershell@v2
|
uses: azure/powershell@v1
|
||||||
with:
|
with:
|
||||||
azPSVersion: "latest"
|
azPSVersion: "latest"
|
||||||
inlineScript: |
|
inlineScript: |
|
||||||
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
||||||
|
$checkResult = $checkResult -and ((Get-AzResourceGroup -Name GitHubAction_CI_RG).ResourceGroupName -eq 'GitHubAction_CI_RG')
|
||||||
|
$checkResult = $checkResult -and ((Get-AzVM).Count -gt 0)
|
||||||
if(-not $checkResult){
|
if(-not $checkResult){
|
||||||
throw "Not all checks passed!"
|
throw "Not all checks passed!"
|
||||||
}
|
}
|
||||||
@@ -183,7 +189,7 @@ jobs:
|
|||||||
az account show --output none
|
az account show --output none
|
||||||
|
|
||||||
- name: Run Azure PowerShell again
|
- name: Run Azure PowerShell again
|
||||||
uses: azure/powershell@v2
|
uses: azure/powershell@v1
|
||||||
with:
|
with:
|
||||||
azPSVersion: "latest"
|
azPSVersion: "latest"
|
||||||
inlineScript: |
|
inlineScript: |
|
||||||
@@ -203,13 +209,13 @@ jobs:
|
|||||||
- name: Run Azure Cli
|
- name: Run Azure Cli
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
$checkResult = (az account list --output json | ConvertFrom-Json).Count -eq 3
|
$checkResult = (az account list --output json | ConvertFrom-Json).Count -eq 2
|
||||||
if(-not $checkResult){
|
if(-not $checkResult){
|
||||||
throw "Not all checks passed!"
|
throw "Not all checks passed!"
|
||||||
}
|
}
|
||||||
|
|
||||||
- name: Run Azure PowerShell
|
- name: Run Azure PowerShell
|
||||||
uses: azure/powershell@v2
|
uses: azure/powershell@v1
|
||||||
with:
|
with:
|
||||||
azPSVersion: "latest"
|
azPSVersion: "latest"
|
||||||
inlineScript: |
|
inlineScript: |
|
||||||
@@ -230,7 +236,7 @@ jobs:
|
|||||||
az account show --output none
|
az account show --output none
|
||||||
|
|
||||||
- name: Run Azure PowerShell
|
- name: Run Azure PowerShell
|
||||||
uses: azure/powershell@v2
|
uses: azure/powershell@v1
|
||||||
with:
|
with:
|
||||||
azPSVersion: "latest"
|
azPSVersion: "latest"
|
||||||
inlineScript: |
|
inlineScript: |
|
||||||
@@ -239,3 +245,118 @@ jobs:
|
|||||||
throw "Not all checks passed!"
|
throw "Not all checks passed!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VMTest:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [self_linux, self_windows]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
environment: Automation test
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: 'Checking out repo code'
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set Node.js 20.x for GitHub Action
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20.x
|
||||||
|
|
||||||
|
- name: 'Validate build'
|
||||||
|
run: |
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
- name: Login with system-assigned managed identity, no subscription-id
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
auth-type: IDENTITY
|
||||||
|
allow-no-subscriptions: true
|
||||||
|
enable-AzPSSession: true
|
||||||
|
|
||||||
|
- name: Run Azure Cli
|
||||||
|
run: |
|
||||||
|
az account show --output none
|
||||||
|
|
||||||
|
- name: Run Azure PowerShell
|
||||||
|
uses: azure/powershell@v1
|
||||||
|
with:
|
||||||
|
azPSVersion: "latest"
|
||||||
|
inlineScript: |
|
||||||
|
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
||||||
|
if(-not $checkResult){
|
||||||
|
throw "Not all checks passed!"
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Login with system-assigned managed identity, with subscription id
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
auth-type: IDENTITY
|
||||||
|
subscription-id: ${{ secrets.AZURE_SUBSCRIPTIONID }}
|
||||||
|
enable-AzPSSession: true
|
||||||
|
|
||||||
|
- name: Run Azure Cli
|
||||||
|
run: |
|
||||||
|
az account show --output none
|
||||||
|
az group show --name GitHubAction_CI_RG --output none
|
||||||
|
az vm list --output none
|
||||||
|
|
||||||
|
- name: Run Azure PowerShell
|
||||||
|
uses: azure/powershell@v1
|
||||||
|
with:
|
||||||
|
azPSVersion: "latest"
|
||||||
|
inlineScript: |
|
||||||
|
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
||||||
|
$checkResult = $checkResult -and ((Get-AzResourceGroup -Name GitHubAction_CI_RG).ResourceGroupName -eq 'GitHubAction_CI_RG')
|
||||||
|
$checkResult = $checkResult -and ((Get-AzVM).Count -gt 0)
|
||||||
|
if(-not $checkResult){
|
||||||
|
throw "Not all checks passed!"
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Login with tenant-level user-assigned managed identity with allow-no-subscriptions
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
client-id: ${{ secrets.UMI2_CLIENT_ID }}
|
||||||
|
allow-no-subscriptions: true
|
||||||
|
auth-type: IDENTITY
|
||||||
|
enable-AzPSSession: true
|
||||||
|
|
||||||
|
- name: Run Azure Cli
|
||||||
|
run: |
|
||||||
|
az account show --output none
|
||||||
|
|
||||||
|
- name: Run Azure PowerShell
|
||||||
|
uses: azure/powershell@v1
|
||||||
|
with:
|
||||||
|
azPSVersion: "latest"
|
||||||
|
inlineScript: |
|
||||||
|
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
||||||
|
if(-not $checkResult){
|
||||||
|
throw "Not all checks passed!"
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Login with user-assigned managed identity, subscription-id
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
client-id: ${{ secrets.UMI1_CLIENT_ID }}
|
||||||
|
subscription-id: ${{ secrets.UMI1_SUBSCRIPTION_ID }}
|
||||||
|
auth-type: IDENTITY
|
||||||
|
enable-AzPSSession: true
|
||||||
|
|
||||||
|
- name: Run Azure Cli
|
||||||
|
run: |
|
||||||
|
az account show --output none
|
||||||
|
az group show --name GitHubAction_CI_RG --output none
|
||||||
|
az vm list --output none
|
||||||
|
|
||||||
|
- name: Run Azure PowerShell
|
||||||
|
uses: azure/powershell@v1
|
||||||
|
with:
|
||||||
|
azPSVersion: "latest"
|
||||||
|
inlineScript: |
|
||||||
|
$checkResult = (Get-AzContext).Environment.Name -eq 'AzureCloud'
|
||||||
|
$checkResult = $checkResult -and ((Get-AzResourceGroup -Name GitHubAction_CI_RG).ResourceGroupName -eq 'GitHubAction_CI_RG')
|
||||||
|
$checkResult = $checkResult -and ((Get-AzVM).Count -gt 0)
|
||||||
|
if(-not $checkResult){
|
||||||
|
throw "Not all checks passed!"
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ Azure Login Action supports different ways of authentication with Azure.
|
|||||||
|tenant-id|false|UUID||the login tenant id|
|
|tenant-id|false|UUID||the login tenant id|
|
||||||
|creds|false|string||a json string for login with an Azure service principal|
|
|creds|false|string||a json string for login with an Azure service principal|
|
||||||
|enable-AzPSSession|false|boolean|false|if Azure PowerShell login is enabled|
|
|enable-AzPSSession|false|boolean|false|if Azure PowerShell login is enabled|
|
||||||
|environment|false|string|azurecloud|the Azure Cloud environment. For cloud environments other than the public cloud, the `audience` will also need to be updated.|
|
|environment|false|string|azurecloud|the Azure Cloud environment|
|
||||||
|allow-no-subscriptions|false|boolean|false|if login without subscription is allowed|
|
|allow-no-subscriptions|false|boolean|false|if login without subscription is allowed|
|
||||||
|audience|false|string|api://AzureADTokenExchange|the audience to get the JWT ID token from GitHub OIDC provider|
|
|audience|false|string|api://AzureADTokenExchange|the audience to get the JWT ID token from GitHub OIDC provider|
|
||||||
|auth-type|false|string|SERVICE_PRINCIPAL|the auth type|
|
|auth-type|false|string|SERVICE_PRINCIPAL|the auth type|
|
||||||
@@ -126,8 +126,6 @@ By default, Azure Login Action connects to the Azure Public Cloud (`AzureCloud`)
|
|||||||
|
|
||||||
To login to one of the Azure Government clouds or Azure Stack, set `environment` to one of the supported values `AzureUSGovernment` or `AzureChinaCloud` or `AzureGermanCloud` or `AzureStack`.
|
To login to one of the Azure Government clouds or Azure Stack, set `environment` to one of the supported values `AzureUSGovernment` or `AzureChinaCloud` or `AzureGermanCloud` or `AzureStack`.
|
||||||
|
|
||||||
The default [`audience`](#audience) for each of these clouds is different and will also need to be set if using anything other than the public environment.
|
|
||||||
|
|
||||||
Refer to [Login to Azure US Government cloud](#login-to-azure-us-government-cloud) for its usage.
|
Refer to [Login to Azure US Government cloud](#login-to-azure-us-government-cloud) for its usage.
|
||||||
|
|
||||||
### `allow-no-subscriptions`
|
### `allow-no-subscriptions`
|
||||||
|
|||||||
@@ -40,7 +40,5 @@ branding:
|
|||||||
runs:
|
runs:
|
||||||
using: 'node20'
|
using: 'node20'
|
||||||
pre: 'lib/cleanup/index.js'
|
pre: 'lib/cleanup/index.js'
|
||||||
pre-if: (! env.AZURE_LOGIN_PRE_CLEANUP_OFF)
|
|
||||||
main: 'lib/main/index.js'
|
main: 'lib/main/index.js'
|
||||||
post: 'lib/cleanup/index.js'
|
post: 'lib/cleanup/index.js'
|
||||||
post-if: (! env.AZURE_LOGIN_POST_CLEANUP_OFF)
|
|
||||||
|
|||||||
4632
lib/cleanup/index.js
Normal file
4632
lib/cleanup/index.js
Normal file
File diff suppressed because it is too large
Load Diff
4911
lib/main/index.js
Normal file
4911
lib/main/index.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -28,10 +28,10 @@ export class AzureCliLogin {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
await this.executeAzCliCommand(["version"], true, execOptions);
|
await this.executeAzCliCommand(["--version"], true, execOptions);
|
||||||
core.debug(`Azure CLI version used:\n${output}`);
|
core.debug(`Azure CLI version used:\n${output}`);
|
||||||
|
|
||||||
await this.registerAzurestackEnvIfNecessary();
|
this.setAzurestackEnvIfNecessary();
|
||||||
|
|
||||||
await this.executeAzCliCommand(["cloud", "set", "-n", this.loginConfig.environment], false);
|
await this.executeAzCliCommand(["cloud", "set", "-n", this.loginConfig.environment], false);
|
||||||
core.info(`Done setting cloud: "${this.loginConfig.environment}"`);
|
core.info(`Done setting cloud: "${this.loginConfig.environment}"`);
|
||||||
@@ -59,7 +59,7 @@ export class AzureCliLogin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async registerAzurestackEnvIfNecessary() {
|
async setAzurestackEnvIfNecessary() {
|
||||||
if (this.loginConfig.environment != "azurestack") {
|
if (this.loginConfig.environment != "azurestack") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -85,7 +85,7 @@ export class AzureCliLogin {
|
|||||||
let suffixKeyvault = ".vault" + baseUri.substring(baseUri.indexOf('.')); // keyvault suffix starts with .
|
let suffixKeyvault = ".vault" + baseUri.substring(baseUri.indexOf('.')); // keyvault suffix starts with .
|
||||||
let suffixStorage = baseUri.substring(baseUri.indexOf('.') + 1); // storage suffix starts without .
|
let suffixStorage = baseUri.substring(baseUri.indexOf('.') + 1); // storage suffix starts without .
|
||||||
let profileVersion = "2019-03-01-hybrid";
|
let profileVersion = "2019-03-01-hybrid";
|
||||||
await this.executeAzCliCommand(["cloud", "register", "-n", this.loginConfig.environment, "--endpoint-resource-manager", this.loginConfig.resourceManagerEndpointUrl, "--suffix-keyvault-dns", suffixKeyvault, "--suffix-storage-endpoint", suffixStorage, "--profile", profileVersion], false);
|
await this.executeAzCliCommand(["cloud", "register", "-n", this.loginConfig.environment, "--endpoint-resource-manager", `"${this.loginConfig.resourceManagerEndpointUrl}"`, "--suffix-keyvault-dns", `"${suffixKeyvault}"`, "--suffix-storage-endpoint", `"${suffixStorage}"`, "--profile", `"${profileVersion}"`], false);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.error(`Error while trying to register cloud "${this.loginConfig.environment}"`);
|
core.error(`Error while trying to register cloud "${this.loginConfig.environment}"`);
|
||||||
|
|||||||
Reference in New Issue
Block a user