Skip to content

Commit 7a8178f

Browse files
authored
net - pullrequest (Azure#47957)
* combined ci and ci.tests.yml changes to enable net - pullrequest * update analyze phase to iterate across the changed packages for that is being tested
1 parent d181c80 commit 7a8178f

File tree

13 files changed

+665
-123
lines changed

13 files changed

+665
-123
lines changed

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

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ jobs:
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
@@ -72,7 +78,9 @@ jobs:
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

Comments
 (0)