Skip to content

Commit a0e1896

Browse files
authored
Add federated identity capabilities to live tests (#35811)
* Add federated identity capabilities to live tests * pwsh: true
1 parent f6e8ed4 commit a0e1896

File tree

3 files changed

+92
-26
lines changed

3 files changed

+92
-26
lines changed

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ parameters:
6363
- name: ToxTestEnv
6464
type: string
6565
default: 'whl'
66+
- name: UseFederatedAuth
67+
type: boolean
68+
default: false
6669

6770
jobs:
6871
- job:
@@ -123,13 +126,19 @@ jobs:
123126
ServiceDirectory: '${{ directory }}'
124127
SubscriptionConfiguration: $(SubscriptionConfiguration)
125128
ArmTemplateParameters: $(ArmTemplateParameters)
129+
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
130+
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
131+
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}
126132
- ${{ if not(parameters.TestResourceDirectories) }}:
127133
- template: /eng/common/TestResources/deploy-test-resources.yml
128134
parameters:
129135
Location: ${{ coalesce(parameters.Location, parameters.CloudConfig.Location) }}
130136
ServiceDirectory: '${{ parameters.ServiceDirectory }}'
131137
SubscriptionConfiguration: $(SubscriptionConfiguration)
132138
ArmTemplateParameters: $(ArmTemplateParameters)
139+
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
140+
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
141+
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}
133142

134143
- template: ../steps/build-test.yml
135144
parameters:
@@ -149,16 +158,24 @@ jobs:
149158
InjectedPackages: ${{ parameters.InjectedPackages }}
150159
BuildDocs: ${{ parameters.BuildDocs }}
151160
TestProxy: ${{ parameters.TestProxy }}
152-
161+
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
162+
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
163+
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}
153164

154165
- ${{ if parameters.TestResourceDirectories }}:
155166
- ${{ each directory in parameters.TestResourceDirectories }}:
156167
- template: /eng/common/TestResources/remove-test-resources.yml
157168
parameters:
158169
ServiceDirectory: '${{ directory }}'
159170
SubscriptionConfiguration: $(SubscriptionConfiguration)
171+
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
172+
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
173+
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}
160174
- ${{ if not(parameters.TestResourceDirectories) }}:
161175
- template: /eng/common/TestResources/remove-test-resources.yml
162176
parameters:
163177
ServiceDirectory: '${{ parameters.ServiceDirectory }}'
164178
SubscriptionConfiguration: $(SubscriptionConfiguration)
179+
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
180+
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
181+
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ parameters:
5858
default:
5959
Public:
6060
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
61+
ServiceConnection: azure-sdk-tests
62+
SubscriptionConfigurationFilePath: eng/common/TestResources/sub-config/AzurePublicMsft.json
6163
Preview:
6264
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources-preview)
6365
Canary:
@@ -98,7 +100,9 @@ parameters:
98100
- name: Packages
99101
type: object
100102
default: []
101-
103+
- name: UseFederatedAuth
104+
type: boolean
105+
default: false
102106

103107
extends:
104108
template: /eng/pipelines/templates/stages/1es-redirect.yml
@@ -141,6 +145,7 @@ extends:
141145
TestTimeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
142146
TestProxy: ${{ parameters.TestProxy }}
143147
ToxTestEnv: ${{ parameters.ToxTestEnv }}
148+
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
144149
MatrixConfigs:
145150
# Enumerate platforms and additional platforms based on supported clouds (sparse platform<-->cloud matrix).
146151
- ${{ each config in parameters.MatrixConfigs }}:
@@ -160,6 +165,8 @@ extends:
160165
SubscriptionConfigurations: ${{ cloud.value.SubscriptionConfigurations }}
161166
Location: ${{ coalesce(parameters.Location, cloud.value.Location) }}
162167
Cloud: ${{ cloud.key }}
168+
ServiceConnection: ${{ cloud.value.ServiceConnection }}
169+
SubscriptionConfigurationFilePath: ${{ cloud.value.SubscriptionConfigurationFilePath }}
163170
- ${{ else }}:
164171
- ${{ each cloud in parameters.CloudConfig }}:
165172
- ${{ if or(contains(parameters.Clouds, cloud.key), and(contains(variables['Build.DefinitionName'], 'tests-weekly'), contains(parameters.SupportedClouds, cloud.key))) }}:
@@ -195,6 +202,7 @@ extends:
195202
TestTimeoutInMinutes: ${{ parameters.TestTimeoutInMinutes }}
196203
TestProxy: ${{ parameters.TestProxy }}
197204
ToxTestEnv: ${{ parameters.ToxTestEnv }}
205+
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
198206
MatrixConfigs:
199207
# Enumerate platforms and additional platforms based on supported clouds (sparse platform<-->cloud matrix).
200208
- ${{ each config in parameters.MatrixConfigs }}:
@@ -214,6 +222,8 @@ extends:
214222
SubscriptionConfigurations: ${{ cloud.value.SubscriptionConfigurations }}
215223
Location: ${{ coalesce(parameters.Location, cloud.value.Location) }}
216224
Cloud: ${{ cloud.key }}
225+
ServiceConnection: ${{ cloud.value.ServiceConnection }}
226+
SubscriptionConfigurationFilePath: ${{ cloud.value.SubscriptionConfigurationFilePath }}
217227
- template: /eng/pipelines/templates/stages/python-analyze-weekly.yml
218228
parameters:
219229
BuildTargetingString: ${{ parameters.BuildTargetingString }}

eng/pipelines/templates/steps/build-test.yml

Lines changed: 63 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ parameters:
1515
InjectedPackages: ''
1616
DevFeedName: 'public/azure-sdk-for-python'
1717
TestProxy: false
18+
UseFederatedAuth: false
19+
ServiceConnection: ''
1820

1921
# The variable TargetingString is set by template `eng/pipelines/templates/steps/targeting-string-resolve.yml`. This template is invoked from yml files:
2022
# eng/pipelines/templates/jobs/ci.tests.yml
@@ -61,20 +63,40 @@ steps:
6163

6264
- template: /eng/pipelines/templates/steps/seed-virtualenv-wheels.yml
6365

64-
- task: PythonScript@0
65-
displayName: 'Run Tests'
66-
inputs:
67-
scriptPath: 'scripts/devops_tasks/dispatch_tox.py'
68-
arguments: >-
69-
"$(TargetingString)"
70-
${{ parameters.AdditionalTestArgs }}
71-
${{ parameters.CoverageArg }}
72-
--mark_arg="${{ parameters.TestMarkArgument }}"
73-
--service="${{ parameters.ServiceDirectory }}"
74-
--toxenv="${{ parameters.ToxTestEnv }}"
75-
--injected-packages="${{ parameters.InjectedPackages }}"
76-
${{ parameters.ToxEnvParallel }}
77-
env: ${{ parameters.EnvVars }}
66+
- ${{ if eq('true', parameters.UseFederatedAuth) }}:
67+
- task: AzurePowerShell@5
68+
displayName: Run Tests (AzurePowerShell@5)
69+
env: ${{ parameters.EnvVars }}
70+
inputs:
71+
azureSubscription: ${{ parameters.ServiceConnection }}
72+
azurePowerShellVersion: LatestVersion
73+
pwsh: true
74+
ScriptType: InlineScript
75+
Inline: >-
76+
python scripts/devops_tasks/dispatch_tox.py
77+
"$(TargetingString)"
78+
${{ parameters.AdditionalTestArgs }}
79+
${{ parameters.CoverageArg }}
80+
--mark_arg="${{ parameters.TestMarkArgument }}"
81+
--service="${{ parameters.ServiceDirectory }}"
82+
--toxenv="${{ parameters.ToxTestEnv }}"
83+
--injected-packages="${{ parameters.InjectedPackages }}"
84+
${{ parameters.ToxEnvParallel }}
85+
- ${{ else }}:
86+
- task: PythonScript@0
87+
displayName: 'Run Tests'
88+
inputs:
89+
scriptPath: 'scripts/devops_tasks/dispatch_tox.py'
90+
arguments: >-
91+
"$(TargetingString)"
92+
${{ parameters.AdditionalTestArgs }}
93+
${{ parameters.CoverageArg }}
94+
--mark_arg="${{ parameters.TestMarkArgument }}"
95+
--service="${{ parameters.ServiceDirectory }}"
96+
--toxenv="${{ parameters.ToxTestEnv }}"
97+
--injected-packages="${{ parameters.InjectedPackages }}"
98+
${{ parameters.ToxEnvParallel }}
99+
env: ${{ parameters.EnvVars }}
78100

79101
- ${{if eq(parameters.TestProxy, true) }}:
80102
- pwsh: |
@@ -95,16 +117,33 @@ steps:
95117
displayName: Create Coverage Report
96118
condition: and(succeeded(), ${{ parameters.RunCoverage }})
97119
98-
- task: PythonScript@0
99-
displayName: 'Test Samples'
100-
condition: and(succeeded(), eq(variables['TestSamples'], 'true'))
101-
inputs:
102-
scriptPath: 'scripts/devops_tasks/dispatch_tox.py'
103-
arguments: >-
104-
"$(TargetingString)"
105-
--service="${{ parameters.ServiceDirectory }}"
106-
--toxenv="samples"
107-
env: ${{ parameters.EnvVars }}
120+
- ${{ if eq('true', parameters.UseFederatedAuth) }}:
121+
- task: AzurePowerShell@5
122+
displayName: Test Samples (AzurePowerShell@5)
123+
condition: and(succeeded(), eq(variables['TestSamples'], 'true'))
124+
env: ${{ parameters.EnvVars }}
125+
inputs:
126+
azureSubscription: ${{ parameters.ServiceConnection }}
127+
azurePowerShellVersion: LatestVersion
128+
pwsh: true
129+
ScriptType: InlineScript
130+
Inline: >-
131+
scripts/devops_tasks/dispatch_tox.py
132+
"$(TargetingString)"
133+
--service="${{ parameters.ServiceDirectory }}"
134+
--toxenv="samples"
135+
136+
- ${{ else }}:
137+
- task: PythonScript@0
138+
displayName: 'Test Samples'
139+
condition: and(succeeded(), eq(variables['TestSamples'], 'true'))
140+
inputs:
141+
scriptPath: 'scripts/devops_tasks/dispatch_tox.py'
142+
arguments: >-
143+
"$(TargetingString)"
144+
--service="${{ parameters.ServiceDirectory }}"
145+
--toxenv="samples"
146+
env: ${{ parameters.EnvVars }}
108147

109148
- task: PublishTestResults@2
110149
condition: always()

0 commit comments

Comments
 (0)