4949 # Add a default so the job doesn't fail when the matrix is empty
5050 container : $[ variables['Container'] ]
5151
52+ variables :
53+ ${{ if eq(parameters.ServiceDirectory, 'auto') }} :
54+ ServiceDirectory : ' *'
55+ ${{ else }} :
56+ ServiceDirectory : ${{ parameters.ServiceDirectory }}
57+
5258 templateContext :
5359 outputs :
5460 - output : pipelineArtifact
7278 - ${{ if not(contains(variables['Build.DefinitionName'], '-pr - ')) }} :
7379 - template : /eng/common/pipelines/templates/steps/sparse-checkout.yml
7480 parameters :
75- ${{ if eq(parameters.ProjectListOverrideFilePropertyName, '') }} :
81+ # we only need to checkout all sdk directories for All PR builds OR the
82+ # deprecating AdditionalDependency leg of the core/resource builds. ProjectListOverrideFilePropertyName will be set in the latter case.
83+ ${{ if and(ne(parameters.ServiceDirectory, 'auto'), eq(parameters.ProjectListOverrideFilePropertyName, '')) }} :
7684 Paths :
7785 - " /*"
7886 - " !SessionRecords"
@@ -82,59 +90,91 @@ jobs:
8290 - " /*"
8391 - " !SessionRecords"
8492 - " /sdk/*/**/SessionRecords/*"
93+
8594 - ${{ if ne(parameters.ProjectListOverrideFilePropertyName, '') }} :
8695 - task : DownloadPipelineArtifact@2
8796 inputs :
8897 artifact : DependencyTestProjectReferences
8998 patterns : " **/$(${{ parameters.ProjectListOverrideFilePropertyName }})"
9099 path : $(Build.SourcesDirectory)
100+ - ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(parameters.ServiceDirectory, 'auto')) }} :
101+ - task : DownloadPipelineArtifact@2
102+ inputs :
103+ artifact : TestPackagesArtifact
104+ path : $(Build.SourcesDirectory)/PackageInfo
105+
91106 - pwsh : |
92107 $(Build.SourcesDirectory)/eng/common/scripts/trust-proxy-certificate.ps1
93108 displayName: 'Language Specific Certificate Trust'
109+
94110 - pwsh : |
95111 Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Path]$(Build.SourcesDirectory)/eng/common/testproxy/dotnet-devcert.pfx"
96112 Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Password]password"
97113 displayName: 'Configure Kestrel Environment Variables'
114+
98115 - template : /eng/common/pipelines/templates/steps/verify-agent-os.yml
99116 parameters :
100117 AgentImage : ${{ parameters.OSName }}
118+
101119 - ${{ each step in parameters.TestSetupSteps }} :
102120 - ${{ each pair in step }} :
103121 ${{ pair.key }} : ${{ pair.value }}
122+
123+ # this section is only included when invoking with a dynamic set of packages (EG net - pullrequest)
124+ - ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(parameters.ServiceDirectory, 'auto')) }} :
125+ - template : /eng/pipelines/templates/steps/set-artifact-packages.yml
126+ parameters :
127+ PackageInfo : ' $(Build.SourcesDirectory)/PackageInfo'
128+
129+ - pwsh : |
130+ if ("$(ProjectNames)" -like "*storage*") {
131+ &"$(Build.SourcesDirectory)/eng/scripts/install_azurite.ps1" -AzuriteLocation "$(AzuriteLocation)" -AzuriteVersion "$(AzuriteVersion)"
132+ }
133+ displayName: Install Azurite If Necessary
134+ condition: ne(variables['ProjectNames'], '')
135+
104136 - template : /eng/pipelines/templates/steps/install-dotnet.yml
105137 parameters :
106138 NuGetCacheKey : Test
139+
140+ # ProjectListOverrideFile is set by the customization within dependency.tests.yml
141+ # OR it is set by the PR built to target a set of packages outside of a single target service directory.
142+ # if it is unset, then we are in a traditional service directory build.
107143 - pwsh : |
108- if ("${{ parameters.ProjectListOverrideFilePropertyName }}" -ne '') {
109- Write-Host "##vso[task.setvariable variable=ProjectListOverrideFileName]$(${{ parameters.ProjectListOverrideFilePropertyName }})"
110- Write-Host "##vso[task.setvariable variable=CodeCoverageFilePattern]$(Build.SourcesDirectory)\sdk\**\coverage.cobertura.xml"
144+ if ($env:PROJECTLISTOVERRIDEFILE) {
145+ Write-Host "##vso[task.setvariable variable=CodeCoverageFilePattern]$(Build.SourcesDirectory)/sdk/**/coverage.cobertura.xml"
111146 }
112147 else
113148 {
114- Write-Host "##vso[task.setvariable variable=ProjectListOverrideFileName]"
115- Write-Host "##vso[task.setvariable variable=CodeCoverageFilePattern]$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}}\**\coverage.cobertura.xml"
149+ # we aren't running in net - pullrequest, so we need to ensure the value is set to empty string
150+ Write-Host "##vso[task.setvariable variable=ProjectListOverrideFile]"
151+ Write-Host "##vso[task.setvariable variable=CodeCoverageFilePattern]$(Build.SourcesDirectory)/sdk/$(ServiceDirectory)/**/coverage.cobertura.xml"
116152 }
117153 displayName: Set variable for the project list file and coverage directory
154+
118155 - template : /eng/pipelines/templates/steps/dotnet-diagnostics.yml
119156 parameters :
120157 LogFilePath : $(Build.ArtifactStagingDirectory)/test.binlog
158+
121159 - script : >-
122160 dotnet test eng/service.proj
123161 --filter "(TestCategory!=Manually) & (TestCategory!=Live) & ($(AdditionalTestFilters))"
124162 --framework $(TestTargetFramework)
125163 --logger "trx;LogFileName=$(TestTargetFramework).trx" --logger:"console;verbosity=normal"
126164 --blame-crash-dump-type full --blame-hang-dump-type full --blame-hang-timeout ${{parameters.TestTimeoutInMinutes}}minutes
127165 /p:SDKType=${{ parameters.SDKType }}
128- /p:ServiceDirectory=${{ parameters. ServiceDirectory }}
166+ /p:ServiceDirectory=$( ServiceDirectory)
129167 /p:IncludeSrc=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false
130168 /p:RunApiCompat=false /p:InheritDocEnabled=false
131169 /p:Configuration=$(BuildConfiguration)
132170 /p:CollectCoverage=$(CollectCoverage)
133171 /p:EnableSourceLink=false
134- /p:ProjectListOverrideFile=$(ProjectListOverrideFileName)
172+ /p:ProjectListOverrideFile=$(ProjectListOverrideFile)
173+ /p:EnableOverrideExclusions=true
135174 $(AdditionalTestArguments)
136175 $(DiagnosticArguments)
137176 displayName: "Build & Test ($(TestTargetFramework))"
177+
138178 - task : PublishTestResults@2
139179 condition : always()
140180 displayName : " Publish Results ($(TestTargetFramework))"
@@ -149,9 +189,9 @@ jobs:
149189 displayName : Generate Code Coverage Reports
150190 inputs :
151191 reports : $(CodeCoverageFilePattern)
152- targetdir : $(Build.ArtifactStagingDirectory)\ coverage
192+ targetdir : $(Build.ArtifactStagingDirectory)/ coverage
153193 reporttypes : Cobertura
154- filefilters : +$(Build.SourcesDirectory)\ sdk\${{parameters. ServiceDirectory}}\ **
194+ filefilters : +$(Build.SourcesDirectory)/ sdk/$( ServiceDirectory)/ **
155195 verbosity : Verbose
156196 - task : PublishCodeCoverageResults@2
157197 condition : and(succeededOrFailed(), eq(variables['CollectCoverage'], 'true'), eq(variables['coverage.collected'], 'true'))
0 commit comments