Skip to content

Commit 7df8e99

Browse files
authored
[engSys] Use common OIDC token env vars for live tests (#33320)
### Packages impacted by this PR `@azure/identity` `@azure/keyvault-admin` `@azure/keyvault-keys` ### Issues associated with this PR ### Describe the problem that is addressed by this PR Builds on previous work in #31335 This PR adds support for `PersistOidcToken` parameter passing, allowing one to refresh their credential using `Connect-AzAccount` or `az login`
1 parent 3b0e6a4 commit 7df8e99

File tree

8 files changed

+65
-26
lines changed

8 files changed

+65
-26
lines changed

eng/pipelines/templates/jobs/live.tests.yml

+4
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ parameters:
4545
- name: UseFederatedAuth
4646
type: boolean
4747
default: false
48+
- name: PersistOidcToken
49+
type: boolean
50+
default: false
4851

4952
jobs:
5053
- job:
@@ -99,6 +102,7 @@ jobs:
99102
SubscriptionConfiguration: $(SubscriptionConfiguration)
100103
ArmTemplateParameters: $(ArmTemplateParameters)
101104
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
105+
PersistOidcToken: ${{ parameters.PersistOidcToken }}
102106
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
103107
SubscriptionConfigurationFilePaths: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePaths }}
104108
EnvVars:

eng/pipelines/templates/stages/archetype-sdk-tests-isolated.yml

+4
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ parameters:
6767
- name: UseFederatedAuth
6868
type: boolean
6969
default: true
70+
- name: PersistOidcToken
71+
type: boolean
72+
default: false
7073

7174
stages:
7275
- ${{ each cloud in parameters.CloudConfig }}:
@@ -95,6 +98,7 @@ stages:
9598
TestResourceDirectories: ${{ parameters.TestResourceDirectories }}
9699
PublishCodeCoverage: ${{ parameters.PublishCodeCoverage }}
97100
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
101+
PersistOidcToken: ${{ parameters.PersistOidcToken }}
98102
PreSteps:
99103
- ${{ parameters.PreSteps }}
100104
PostSteps:

eng/pipelines/templates/stages/archetype-sdk-tests.yml

+4
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ parameters:
6767
- name: UseFederatedAuth
6868
type: boolean
6969
default: true
70+
- name: PersistOidcToken
71+
type: boolean
72+
default: false
7073

7174

7275
extends:
@@ -87,6 +90,7 @@ extends:
8790
SupportedClouds: ${{ parameters.SupportedClouds }}
8891
UnsupportedClouds: ${{ parameters.UnsupportedClouds }}
8992
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
93+
PersistOidcToken: ${{ parameters.PersistOidcToken }}
9094
PreSteps:
9195
- ${{ parameters.PreSteps }}
9296
PostSteps:

sdk/identity/identity/tests.yml

+1-20
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,10 @@ extends:
44
template: /eng/pipelines/templates/stages/archetype-sdk-tests.yml
55
parameters:
66
Location: westus2
7-
PreSteps:
8-
- task: AzureCLI@2
9-
displayName: Set OIDC variables
10-
env:
11-
ARM_OIDC_TOKEN: $(ARM_OIDC_TOKEN)
12-
ARM_CLIENT_ID: $(ARM_CLIENT_ID)
13-
ARM_TENANT_ID: $(ARM_TENANT_ID)
14-
inputs:
15-
azureSubscription: azure-sdk-tests
16-
scriptType: pscore
17-
scriptLocation: inlineScript
18-
addSpnToEnvironment: true
19-
inlineScript: |
20-
Write-Host "##vso[task.setvariable variable=ARM_CLIENT_ID;issecret=true]$($env:servicePrincipalId)"
21-
Write-Host "##vso[task.setvariable variable=ARM_TENANT_ID;issecret=true]$($env:tenantId)"
22-
Write-Host "##vso[task.setvariable variable=ARM_OIDC_TOKEN;issecret=true]$($env:idToken)"
237
PackageName: "@azure/identity"
248
ServiceDirectory: identity
259
TimeoutInMinutes: 120
10+
PersistOidcToken: true
2611
CloudConfig:
2712
Public:
2813
SubscriptionConfigurations:
@@ -39,8 +24,4 @@ extends:
3924
- OSVmImage=.*LINUXNEXTVMIMAGE.*/azsdk-pool-mms-ubuntu-2204-1espt
4025
EnvVars:
4126
AZURE_CLIENT_ID: $(IDENTITY_CLIENT_ID)
42-
AZURE_CLIENT_SECRET: $(IDENTITY_CLIENT_SECRET)
4327
AZURE_TENANT_ID: $(IDENTITY_TENANT_ID)
44-
ARM_OIDC_TOKEN: $(ARM_OIDC_TOKEN)
45-
ARM_CLIENT_ID: $(ARM_CLIENT_ID)
46-
ARM_TENANT_ID: $(ARM_TENANT_ID)

sdk/identity/test-resources-post.ps1

+20-6
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,31 @@
44
# IMPORTANT: Do not invoke this file directly. Please instead run eng/New-TestResources.ps1 from the repository root.
55

66
param (
7-
[Parameter(ValueFromRemainingArguments = $true)]
8-
$RemainingArguments,
9-
107
[Parameter()]
118
[hashtable] $DeploymentOutputs,
129

1310
[Parameter()]
1411
[switch] $CI = ($null -ne $env:SYSTEM_TEAMPROJECTID),
1512

13+
[Parameter(Mandatory = $true)]
14+
[ValidateNotNullOrEmpty()]
15+
[string] $SubscriptionId,
16+
17+
[Parameter(Mandatory = $true)]
18+
[ValidateNotNullOrEmpty()]
19+
[string] $TenantId,
20+
1621
[Parameter()]
17-
[hashtable] $AdditionalParameters = @{}
22+
[ValidatePattern('^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$')]
23+
[string] $TestApplicationId,
24+
25+
[Parameter(Mandatory = $true)]
26+
[ValidateNotNullOrEmpty()]
27+
[string] $Environment,
28+
29+
# Captures any arguments from eng/New-TestResources.ps1 not declared here (no parameter errors).
30+
[Parameter(ValueFromRemainingArguments = $true)]
31+
$RemainingArguments
1832
)
1933

2034
if (!$AdditionalParameters['deployMIResources']) {
@@ -39,8 +53,8 @@ Write-Host "Working directory: $workingFolder"
3953

4054
if ($CI) {
4155
Write-Host "Logging in to service principal"
42-
az login --service-principal -u $env:ARM_CLIENT_ID --tenant $env:ARM_TENANT_ID --allow-no-subscriptions --federated-token $env:ARM_OIDC_TOKEN
43-
az account set --subscription $DeploymentOutputs['IDENTITY_SUBSCRIPTION_ID']
56+
az login --service-principal -u $TestApplicationId --tenant $TenantId --allow-no-subscriptions --federated-token $env:ARM_OIDC_TOKEN
57+
az account set --subscription $SubscriptionId
4458
}
4559

4660
# Azure Functions app deployment

sdk/keyvault/keyvault-admin/tests.yml

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ extends:
1010
# instances per region per subscription) so we're only running
1111
# live tests against a single instance.
1212
Location: eastus2
13+
PersistOidcToken: true
1314
MatrixConfigs:
1415
- Name: Keyvault_live_test_base
1516
Path: sdk/keyvault/keyvault-admin/platform-matrix.json

sdk/keyvault/keyvault-keys/tests.yml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ extends:
66
PackageName: "@azure/keyvault-keys"
77
ServiceDirectory: keyvault
88
TimeoutInMinutes: 90
9+
PersistOidcToken: true
910
CloudConfig:
1011
Public:
1112
Location: 'eastus2'

sdk/keyvault/test-resources-post.ps1

+30
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,25 @@ param (
1515
[Parameter()]
1616
[hashtable] $DeploymentOutputs,
1717

18+
[Parameter(Mandatory = $true)]
19+
[ValidateNotNullOrEmpty()]
20+
[string] $SubscriptionId,
21+
22+
[Parameter(Mandatory = $true)]
23+
[ValidateNotNullOrEmpty()]
24+
[string] $TenantId,
25+
26+
[Parameter()]
27+
[ValidatePattern('^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$')]
28+
[string] $TestApplicationId,
29+
30+
[Parameter(Mandatory = $true)]
31+
[ValidateNotNullOrEmpty()]
32+
[string] $Environment,
33+
34+
[Parameter()]
35+
[switch] $CI = ($null -ne $env:SYSTEM_TEAMPROJECTID),
36+
1837
# Captures any arguments from eng/New-TestResources.ps1 not declared here (no parameter errors).
1938
[Parameter(ValueFromRemainingArguments = $true)]
2039
$RemainingArguments
@@ -95,6 +114,17 @@ if (Test-Path $sdpath) {
95114
Remove-Item $sdPath -Force
96115
}
97116

117+
if ($CI) {
118+
Log "Logging in to service principal"
119+
120+
Connect-AzAccount -ServicePrincipal `
121+
-TenantId $TenantId `
122+
-ApplicationId $TestApplicationId `
123+
-FederatedToken $env:ARM_OIDC_TOKEN `
124+
125+
Select-AzSubscription -Subscription $SubscriptionId
126+
}
127+
98128
Export-AzKeyVaultSecurityDomain -Name $hsmName -Quorum 2 -Certificates $wrappingFiles -OutputPath $sdPath -ErrorAction SilentlyContinue -Verbose
99129
if ( !$? ) {
100130
Write-Host $Error[0].Exception

0 commit comments

Comments
 (0)