Skip to content

Commit 12a3423

Browse files
committed
Split integration test build from test run
1 parent f4f26fd commit 12a3423

9 files changed

+238
-166
lines changed

azure-pipelines-integration-corehost.yml

+21-27
Original file line numberDiff line numberDiff line change
@@ -70,34 +70,28 @@ parameters:
7070
type: number
7171
default: 150
7272

73-
jobs:
74-
- job: VS_Integration_CoreHost_Debug
75-
pool:
76-
name: ${{ parameters.poolName }}
77-
demands: ImageOverride -equals ${{ parameters.queueName }}
78-
timeoutInMinutes: ${{ parameters.timeout }}
79-
variables:
80-
- name: XUNIT_LOGS
81-
value: $(Build.SourcesDirectory)\artifacts\log\Debug
82-
steps:
83-
- template: eng/pipelines/test-integration-job.yml
84-
parameters:
85-
configuration: Debug
86-
oop64bit: true
73+
stages:
74+
- template: eng/pipelines/test-integration-helix.yml
75+
parameters:
76+
poolName: ${{ parameters.poolName }}
77+
queueName: ${{ parameters.queueName }}
78+
timeout: ${{ parameters.timeout }}
79+
configuration: Debug
80+
testRuns:
81+
- oop64bit: true
8782
oopCoreClr: true
83+
lspEditor: false
84+
runName: VS_Integration_CoreHost_Debug
8885

8986
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
90-
- job: VS_Integration_CoreHost_Release
91-
pool:
92-
name: ${{ parameters.poolName }}
93-
demands: ImageOverride -equals ${{ parameters.queueName }}
94-
timeoutInMinutes: ${{ parameters.timeout }}
95-
variables:
96-
- name: XUNIT_LOGS
97-
value: $(Build.SourcesDirectory)\artifacts\log\Debug
98-
steps:
99-
- template: eng/pipelines/test-integration-job.yml
100-
parameters:
101-
configuration: Release
102-
oop64bit: true
87+
- template: eng/pipelines/test-integration-helix.yml
88+
parameters:
89+
poolName: ${{ parameters.poolName }}
90+
queueName: ${{ parameters.queueName }}
91+
timeout: ${{ parameters.timeout }}
92+
configuration: Release
93+
testRuns:
94+
- oop64bit: true
10395
oopCoreClr: true
96+
lspEditor: false
97+
runName: VS_Integration_CoreHost_Release

azure-pipelines-integration-lsp.yml

+11-16
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,15 @@ parameters:
5656
type: number
5757
default: 150
5858

59-
variables:
60-
- name: XUNIT_LOGS
61-
value: $(Build.SourcesDirectory)\artifacts\log\$(_configuration)
62-
63-
jobs:
64-
- job: VS_Integration_LSP
65-
pool:
66-
name: ${{ parameters.poolName }}
67-
demands: ImageOverride -equals ${{ parameters.queueName }}
68-
timeoutInMinutes: ${{ parameters.timeout }}
69-
70-
steps:
71-
- template: eng/pipelines/test-integration-job.yml
72-
parameters:
73-
configuration: Debug
74-
oop64bit: true
59+
stages:
60+
- template: eng/pipelines/test-integration-helix.yml
61+
parameters:
62+
poolName: ${{ parameters.poolName }}
63+
queueName: ${{ parameters.queueName }}
64+
timeout: ${{ parameters.timeout }}
65+
configuration: Debug
66+
testRuns:
67+
- oop64bit: true
68+
oopCoreClr: false
7569
lspEditor: true
70+
runName: VS_Integration_LSP_Debug_64

azure-pipelines-integration-scouting.yml

+30-58
Original file line numberDiff line numberDiff line change
@@ -34,62 +34,34 @@ parameters:
3434
default: 150
3535

3636
stages:
37-
- stage: Debug_Integration
38-
dependsOn: []
39-
variables:
40-
- name: XUNIT_LOGS
41-
value: $(Build.SourcesDirectory)\artifacts\log\Debug
42-
jobs:
43-
- job: VS_Integration_Debug_32
44-
pool:
45-
name: ${{ parameters.poolName }}
46-
demands: ImageOverride -equals ${{ parameters.queueName }}
47-
timeoutInMinutes: ${{ parameters.timeout }}
48-
steps:
49-
- template: eng/pipelines/test-integration-job.yml
50-
parameters:
51-
configuration: Debug
52-
oop64bit: false
53-
lspEditor: false
37+
- template: eng/pipelines/test-integration-helix.yml
38+
parameters:
39+
poolName: ${{ parameters.poolName }}
40+
queueName: ${{ parameters.queueName }}
41+
timeout: ${{ parameters.timeout }}
42+
configuration: Debug
43+
testRuns:
44+
- oop64bit: false
45+
oopCoreClr: false
46+
lspEditor: false
47+
runName: VS_Integration_Debug_32
48+
- oop64bit: true
49+
oopCoreClr: false
50+
lspEditor: false
51+
runName: VS_Integration_Debug_64
5452

55-
- job: VS_Integration_Debug_64
56-
pool:
57-
name: ${{ parameters.poolName }}
58-
demands: ImageOverride -equals ${{ parameters.queueName }}
59-
timeoutInMinutes: ${{ parameters.timeout }}
60-
steps:
61-
- template: eng/pipelines/test-integration-job.yml
62-
parameters:
63-
configuration: Debug
64-
oop64bit: true
65-
lspEditor: false
66-
67-
- stage: Release_Integration
68-
dependsOn: []
69-
variables:
70-
- name: XUNIT_LOGS
71-
value: $(Build.SourcesDirectory)\artifacts\log\Release
72-
jobs:
73-
- job: VS_Integration_Release_32
74-
pool:
75-
name: ${{ parameters.poolName }}
76-
demands: ImageOverride -equals ${{ parameters.queueName }}
77-
timeoutInMinutes: ${{ parameters.timeout }}
78-
steps:
79-
- template: eng/pipelines/test-integration-job.yml
80-
parameters:
81-
configuration: Release
82-
oop64bit: false
83-
lspEditor: false
84-
85-
- job: VS_Integration_Release_64
86-
pool:
87-
name: ${{ parameters.poolName }}
88-
demands: ImageOverride -equals ${{ parameters.queueName }}
89-
timeoutInMinutes: ${{ parameters.timeout }}
90-
steps:
91-
- template: eng/pipelines/test-integration-job.yml
92-
parameters:
93-
configuration: Release
94-
oop64bit: true
95-
lspEditor: false
53+
- template: eng/pipelines/test-integration-helix.yml
54+
parameters:
55+
poolName: ${{ parameters.poolName }}
56+
queueName: ${{ parameters.queueName }}
57+
timeout: ${{ parameters.timeout }}
58+
configuration: Release
59+
testRuns:
60+
- oop64bit: false
61+
oopCoreClr: false
62+
lspEditor: false
63+
runName: VS_Integration_Release_32
64+
- oop64bit: true
65+
oopCoreClr: false
66+
lspEditor: false
67+
runName: VS_Integration_Release_64

azure-pipelines-integration.yml

+30-58
Original file line numberDiff line numberDiff line change
@@ -68,64 +68,36 @@ parameters:
6868
default: 150
6969

7070
stages:
71-
- stage: Debug_Integration
72-
dependsOn: []
73-
variables:
74-
- name: XUNIT_LOGS
75-
value: $(Build.SourcesDirectory)\artifacts\log\Debug
76-
jobs:
77-
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
78-
- job: VS_Integration_Debug_32
79-
pool:
80-
name: ${{ parameters.poolName }}
81-
demands: ImageOverride -equals ${{ parameters.queueName }}
82-
timeoutInMinutes: ${{ parameters.timeout }}
83-
steps:
84-
- template: eng/pipelines/test-integration-job.yml
85-
parameters:
86-
configuration: Debug
87-
oop64bit: false
88-
lspEditor: false
89-
90-
- job: VS_Integration_Debug_64
91-
pool:
92-
name: ${{ parameters.poolName }}
93-
demands: ImageOverride -equals ${{ parameters.queueName }}
94-
timeoutInMinutes: ${{ parameters.timeout }}
95-
steps:
96-
- template: eng/pipelines/test-integration-job.yml
97-
parameters:
98-
configuration: Debug
99-
oop64bit: true
71+
- template: eng/pipelines/test-integration-helix.yml
72+
parameters:
73+
poolName: ${{ parameters.poolName }}
74+
queueName: ${{ parameters.queueName }}
75+
timeout: ${{ parameters.timeout }}
76+
configuration: Debug
77+
testRuns:
78+
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
79+
- oop64bit: false
80+
oopCoreClr: false
10081
lspEditor: false
82+
runName: VS_Integration_Debug_32
83+
- oop64bit: true
84+
oopCoreClr: false
85+
lspEditor: false
86+
runName: VS_Integration_Debug_64
10187

102-
- stage: Release_Integration
103-
dependsOn: []
104-
variables:
105-
- name: XUNIT_LOGS
106-
value: $(Build.SourcesDirectory)\artifacts\log\Release
107-
jobs:
108-
- job: VS_Integration_Release_32
109-
pool:
110-
name: ${{ parameters.poolName }}
111-
demands: ImageOverride -equals ${{ parameters.queueName }}
112-
timeoutInMinutes: ${{ parameters.timeout }}
113-
steps:
114-
- template: eng/pipelines/test-integration-job.yml
115-
parameters:
116-
configuration: Release
117-
oop64bit: false
88+
- template: eng/pipelines/test-integration-helix.yml
89+
parameters:
90+
poolName: ${{ parameters.poolName }}
91+
queueName: ${{ parameters.queueName }}
92+
timeout: ${{ parameters.timeout }}
93+
configuration: Release
94+
testRuns:
95+
- oop64bit: false
96+
oopCoreClr: false
97+
lspEditor: false
98+
runName: VS_Integration_Release_32
99+
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
100+
- oop64bit: true
101+
oopCoreClr: false
118102
lspEditor: false
119-
120-
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
121-
- job: VS_Integration_Release_64
122-
pool:
123-
name: ${{ parameters.poolName }}
124-
demands: ImageOverride -equals ${{ parameters.queueName }}
125-
timeoutInMinutes: ${{ parameters.timeout }}
126-
steps:
127-
- template: eng/pipelines/test-integration-job.yml
128-
parameters:
129-
configuration: Release
130-
oop64bit: true
131-
lspEditor: false
103+
runName: VS_Integration_Release_64

eng/common/tools.ps1

+2
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,8 @@ function MSBuild-Core() {
829829

830830
$env:ARCADE_BUILD_TOOL_COMMAND = "$($buildTool.Path) $cmdArgs"
831831

832+
Write-Host "Executing: $($buildTool.Path) $cmdArgs"
833+
832834
$exitCode = Exec-Process $buildTool.Path $cmdArgs
833835

834836
if ($exitCode -ne 0) {
+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
parameters:
2+
- name: poolName
3+
type: string
4+
- name: queueName
5+
type: string
6+
- name: configuration
7+
type: string
8+
default: 'Debug'
9+
- name: timeout
10+
type: number
11+
- name: testRuns
12+
type: object
13+
default:
14+
- oop64bit: true
15+
oopCoreClr: false
16+
lspEditor: false
17+
runName: 64
18+
19+
20+
stages:
21+
- stage: Windows_${{ parameters.configuration }}_Build
22+
dependsOn: []
23+
jobs:
24+
- template: build-windows-job.yml
25+
parameters:
26+
jobName: Build_Windows_${{ parameters.configuration }}
27+
testArtifactName: Transport_Artifacts_Windows_${{ parameters.configuration }}
28+
configuration: ${{ parameters.configuration }}
29+
poolName: ${{ parameters.poolName }}
30+
queueName: ${{ parameters.queueName }}
31+
restoreArguments: -msbuildEngine vs
32+
buildArguments: -msbuildEngine vs
33+
34+
- stage: ${{ parameters.configuration }}_Integration
35+
dependsOn: Windows_${{ parameters.configuration }}_Build
36+
variables:
37+
- name: XUNIT_LOGS
38+
value: $(Build.SourcesDirectory)\artifacts\log\Debug
39+
jobs:
40+
- ${{ each testParameters in parameters.testRuns }}:
41+
- job: ${{ testParameters.runName }}
42+
timeoutInMinutes: ${{ parameters.timeout }}
43+
pool:
44+
name: ${{ parameters.poolName }}
45+
demands: ImageOverride -equals ${{ parameters.queueName }}
46+
steps:
47+
- task: DownloadPipelineArtifact@2
48+
displayName: Download Test Payload
49+
inputs:
50+
artifact: Transport_Artifacts_Windows_${{ parameters.configuration }}
51+
path: '$(Build.SourcesDirectory)'
52+
53+
- task: BatchScript@1
54+
displayName: Rehydrate RunTests
55+
inputs:
56+
filename: ./artifacts/bin/RunTests/${{ parameters.configuration }}/net7.0/rehydrate.cmd
57+
env:
58+
HELIX_CORRELATION_PAYLOAD: '$(Build.SourcesDirectory)\.duplicate'
59+
60+
# This is a temporary step until the actual test run moves to helix (then we would need to rehydrate the tests there instead)
61+
- task: BatchScript@1
62+
displayName: Rehydrate Microsoft.VisualStudio.LanguageServices.New.IntegrationTests
63+
inputs:
64+
filename: ./artifacts/bin/Microsoft.VisualStudio.LanguageServices.New.IntegrationTests/${{ parameters.configuration }}/net472/rehydrate.cmd
65+
env:
66+
HELIX_CORRELATION_PAYLOAD: '$(Build.SourcesDirectory)\.duplicate'
67+
68+
- task: PowerShell@2
69+
displayName: Run Integration Tests
70+
inputs:
71+
filePath: eng/build.ps1
72+
arguments: -ci -prepareMachine -testVsi -oop64bit:$${{ testParameters.oop64bit }} -oopCoreClr:$${{ testParameters.oopCoreClr }} -collectDumps -lspEditor:$${{ testParameters.lspEditor }}
73+
74+
# These are temporary publishing steps - once the tests run on helix, the artifacts will be attached to the helix payload.
75+
- task: PublishTestResults@2
76+
displayName: Publish xUnit Test Results
77+
inputs:
78+
testRunner: XUnit
79+
testResultsFiles: $(Build.SourcesDirectory)\artifacts\TestResults\${{ parameters.configuration }}\*.xml
80+
mergeTestResults: true
81+
testRunTitle: '$(System.JobAttempt)-Integration ${{ parameters.configuration }} OOP64_${{ testParameters.oop64bit }} OOPCoreClr_${{ testParameters.oopCoreClr }}'
82+
condition: always()
83+
84+
# Dumps from test timeouts or crashes get published to the test results directory by dotnet test, so make sure to publish any here.
85+
- task: PublishBuildArtifacts@1
86+
displayName: Publish Test Results Directory
87+
inputs:
88+
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults\${{ parameters.configuration }}'
89+
ArtifactName: '$(System.JobAttempt)-Logs ${{ parameters.configuration }} OOP64_${{ testParameters.oop64bit }} OOPCoreClr_${{ testParameters.oopCoreClr }} LspEditor_${{ testParameters.lspEditor }} $(Build.BuildNumber)'
90+
publishLocation: Container
91+
continueOnError: true
92+
condition: not(succeeded())
93+
94+
- task: PublishBuildArtifacts@1
95+
displayName: Publish Logs
96+
inputs:
97+
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\${{ parameters.configuration }}'
98+
ArtifactName: '$(System.JobAttempt)-Logs ${{ parameters.configuration }} OOP64_${{ testParameters.oop64bit }} OOPCoreClr_${{ testParameters.oopCoreClr }} LspEditor_${{ testParameters.lspEditor }} $(Build.BuildNumber)'
99+
publishLocation: Container
100+
continueOnError: true
101+
condition: not(succeeded())
102+
103+
- task: PublishBuildArtifacts@1
104+
displayName: Publish Screenshots and Test Attachments (Old Tests)
105+
inputs:
106+
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\bin\Microsoft.VisualStudio.LanguageServices.IntegrationTests\${{ parameters.configuration }}\net472\TestResults'
107+
ArtifactName: '$(System.JobAttempt)-Screenshots ${{ parameters.configuration }} OOP64_${{ testParameters.oop64bit }} OOPCoreClr_${{ testParameters.oopCoreClr }} LspEditor_${{ testParameters.lspEditor }} $(Build.BuildNumber)'
108+
publishLocation: Container
109+
continueOnError: true
110+
condition: not(succeeded())

0 commit comments

Comments
 (0)