Skip to content

Commit

Permalink
Add workload-identity capabilities to live test (#44083)
Browse files Browse the repository at this point in the history
* Update tests.yml files to specify ServiceConnection and UseFederatedAuth

* Add federated identities

* Test keyvault

* Revert change to use federated tests

* Add SubscriptionConfigurationFilePath support

* Cleanup TODO
  • Loading branch information
danieljurek authored May 29, 2024
1 parent 26059a5 commit 0c9605f
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 24 deletions.
96 changes: 72 additions & 24 deletions eng/pipelines/templates/jobs/live.tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ parameters:
default: false
- name: OSName
type: string
- name: UseFederatedAuth
type: boolean

jobs:
- job:
Expand Down Expand Up @@ -134,6 +136,9 @@ jobs:
TestResourcesDirectory: '$(TestResourcesDirectory)'
SubscriptionConfiguration: $(SubscriptionConfiguration)
ArmTemplateParameters: $(ArmTemplateParameters)
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}
- ${{ if not(parameters.TestResourceDirectories) }}:
- template: /eng/common/TestResources/deploy-test-resources.yml
parameters:
Expand All @@ -143,6 +148,10 @@ jobs:
TestResourcesDirectory: '$(TestResourcesDirectory)'
SubscriptionConfiguration: $(SubscriptionConfiguration)
ArmTemplateParameters: $(ArmTemplateParameters)
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}

- pwsh: |
if ($env:SupportsRecording -and $env:Record) {
Write-Host "Enabling Record mode"
Expand All @@ -152,30 +161,62 @@ jobs:
- template: /eng/pipelines/templates/steps/install-dotnet.yml
parameters:
Container: ${{ parameters.UsePlatformContainer }}
- script: >
dotnet test eng/service.proj
--framework $(TestTargetFramework)
--filter "TestCategory!=Manually & ($(AdditionalTestFilters))"
--logger "trx"
--logger:"console;verbosity=normal"
--blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes
/p:SDKType=${{ parameters.SDKType }}
/p:ServiceDirectory=${{ parameters.ServiceDirectory }}
/p:Project=${{ parameters.Project }}
/p:IncludeSrc=false
/p:IncludeSamples=false
/p:IncludePerf=false
/p:IncludeStress=false
/p:BuildInParallel=${{ parameters.BuildInParallel }}
/p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}}
/p:EnableSourceLink=false
$(AdditionalTestArguments)
displayName: "Build & Test (all tests for $(TestTargetFramework))"
env:
AZURE_TEST_MODE: $(TestMode)
${{ each var in parameters.EnvVars }}:
${{ var.key }}: ${{ var.value }}

- ${{ if eq('true', parameters.UseFederatedAuth) }}:
- task: AzurePowerShell@5
displayName: "Build & Test (all tests for $(TestTargetFramework)) - Federated Auth"
inputs:
azureSubscription: ${{ parameters.CloudConfig.ServiceConnection }}
azurePowerShellVersion: LatestVersion
pwsh: true
ScriptType: InlineScript
Inline: >-
dotnet test eng/service.proj
--framework $(TestTargetFramework)
--filter "TestCategory!=Manually & ($(AdditionalTestFilters))"
--logger "trx"
--logger:"console;verbosity=normal"
--blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes
/p:SDKType=${{ parameters.SDKType }}
/p:ServiceDirectory=${{ parameters.ServiceDirectory }}
/p:Project=${{ parameters.Project }}
/p:IncludeSrc=false
/p:IncludeSamples=false
/p:IncludePerf=false
/p:IncludeStress=false
/p:BuildInParallel=${{ parameters.BuildInParallel }}
/p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}}
/p:EnableSourceLink=false
$(AdditionalTestArguments)
env:
AZURE_TEST_MODE: $(TestMode)
${{ each var in parameters.EnvVars }}:
${{ var.key }}: ${{ var.value }}

- ${{ else }}:
- script: >-
dotnet test eng/service.proj
--framework $(TestTargetFramework)
--filter "TestCategory!=Manually & ($(AdditionalTestFilters))"
--logger "trx"
--logger:"console;verbosity=normal"
--blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TimeoutInMinutes}}minutes
/p:SDKType=${{ parameters.SDKType }}
/p:ServiceDirectory=${{ parameters.ServiceDirectory }}
/p:Project=${{ parameters.Project }}
/p:IncludeSrc=false
/p:IncludeSamples=false
/p:IncludePerf=false
/p:IncludeStress=false
/p:BuildInParallel=${{ parameters.BuildInParallel }}
/p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}}
/p:EnableSourceLink=false
$(AdditionalTestArguments)
displayName: "Build & Test (all tests for $(TestTargetFramework)) - Client Secret Auth"
env:
AZURE_TEST_MODE: $(TestMode)
${{ each var in parameters.EnvVars }}:
${{ var.key }}: ${{ var.value }}
- ${{ if parameters.DeployTestResources }}:
- ${{ if parameters.TestResourceDirectories }}:
Expand All @@ -184,11 +225,18 @@ jobs:
parameters:
ServiceDirectory: '${{ directory }}'
SubscriptionConfiguration: $(SubscriptionConfiguration)
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}

- ${{ if not(parameters.TestResourceDirectories) }}:
- template: /eng/common/TestResources/remove-test-resources.yml
parameters:
ServiceDirectory: '${{ parameters.ServiceDirectory }}'
SubscriptionConfiguration: $(SubscriptionConfiguration)
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
ServiceConnection: ${{ parameters.CloudConfig.ServiceConnection }}
SubscriptionConfigurationFilePath: ${{ parameters.CloudConfig.SubscriptionConfigurationFilePath }}

- task: PublishTestResults@2
condition: always()
Expand Down
12 changes: 12 additions & 0 deletions eng/pipelines/templates/stages/archetype-sdk-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,21 @@ parameters:
default:
Public:
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
ServiceConnection: azure-sdk-tests
SubscriptionConfigurationFilePath: eng/common/TestResources/sub-config/AzurePublicMsft.json
Preview:
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources-preview)
ServiceConnection: azure-sdk-tests
Canary:
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
Location: 'eastus2euap'
ServiceConnection: azure-sdk-tests
UsGov:
SubscriptionConfiguration: $(sub-config-gov-test-resources)
ServiceConnection: usgov_azure-sdk-tests
China:
SubscriptionConfiguration: $(sub-config-cn-test-resources)
ServiceConnection: china_azure-sdk-tests
- name: MatrixConfigs
type: object
default:
Expand Down Expand Up @@ -105,6 +111,9 @@ parameters:
- name: oneESTemplateTag
type: string
default: true
- name: UseFederatedAuth
type: boolean
default: true

extends:
template: /eng/pipelines/templates/stages/1es-redirect.yml
Expand Down Expand Up @@ -145,6 +154,7 @@ extends:
Project: ${{ parameters.Project }}
TestSetupSteps: ${{ parameters.TestSetupSteps }}
DeployTestResources: ${{ parameters.DeployTestResources }}
UseFederatedAuth: ${{ parameters.UseFederatedAuth }}
MatrixConfigs:
# Enumerate platforms and additional platforms based on supported clouds (sparse platform<-->cloud matrix).
- ${{ each config in parameters.MatrixConfigs }}:
Expand All @@ -161,6 +171,8 @@ extends:
- ${{ parameters.MatrixReplace }}
CloudConfig:
SubscriptionConfiguration: ${{ cloud.value.SubscriptionConfiguration }}
ServiceConnection: ${{ cloud.value.ServiceConnection }}
SubscriptionConfigurationFilePath: ${{ cloud.value.SubscriptionConfigurationFilePath }}
SubscriptionConfigurations: ${{ cloud.value.SubscriptionConfigurations }}
Location: ${{ coalesce(parameters.Location, cloud.value.Location) }}
Cloud: ${{ cloud.key }}
Expand Down
3 changes: 3 additions & 0 deletions sdk/keyvault/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@ extends:
CloudConfig:
Public:
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
ServiceConnection: azure-sdk-tests
${{ if not(contains(variables['Build.DefinitionName'], 'tests-weekly')) }}:
MatrixFilters:
- ArmTemplateParameters=^(?!.*enableHsm.*true)
Canary:
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
Location: 'centraluseuap'
ServiceConnection: azure-sdk-tests
# Managed HSM test resources are expensive and provisioning has not been reliable.
# Given test coverage of non-canary regions we probably don't need to test in canary.
MatrixFilters:
Expand All @@ -26,6 +28,7 @@ extends:
- 'ArmTemplateParameters=(.*)enableAttestation.*?\$true(.*)/$1enableAttestation \= $false$2'
UsGov:
SubscriptionConfiguration: $(sub-config-gov-test-resources)
ServiceConnection: usgov_azure-sdk-tests
MatrixFilters:
- ArmTemplateParameters=^(?!.*enableHsm.*true)
MatrixConfigs:
Expand Down

0 comments on commit 0c9605f

Please sign in to comment.