Skip to content

Commit 1afeb64

Browse files
committed
Split test in separate agents
1 parent 33a8b15 commit 1afeb64

File tree

2 files changed

+179
-48
lines changed

2 files changed

+179
-48
lines changed

.vsts-ci.yml

Lines changed: 159 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,161 @@
11
jobs:
2+
- job: build
3+
strategy:
4+
matrix:
5+
linux:
6+
osName: 'Linux'
7+
imageName: 'ubuntu-22.04'
8+
mac:
9+
osName: 'macOS'
10+
imageName: 'macOS-latest'
11+
windows:
12+
osName: 'Windows'
13+
imageName: 'windows-latest'
214

3-
################################################################################
4-
- job: Windows
5-
################################################################################
6-
displayName: Windows
7-
timeoutInMinutes: 180
8-
pool:
9-
vmImage: windows-latest
10-
steps:
11-
- template: eng/steps.yml
12-
parameters:
13-
os: 'Windows'
14-
15-
################################################################################
16-
- job: Linux
17-
################################################################################
18-
displayName: Linux (Ubuntu)
19-
timeoutInMinutes: 180
20-
pool:
21-
vmImage: ubuntu-22.04
22-
steps:
23-
- template: eng/steps.yml
24-
parameters:
25-
os: 'Linux'
26-
27-
################################################################################
28-
- job: macOS
29-
################################################################################
30-
displayName: macOS
31-
timeoutInMinutes: 180
32-
pool:
33-
vmImage: macOS-latest
34-
steps:
35-
- template: eng/steps.yml
36-
parameters:
37-
os: 'macOS'
15+
displayName: Build
16+
timeoutInMinutes: 180
17+
pool:
18+
vmImage: $(imageName)
19+
20+
steps:
21+
- checkout: self
22+
submodules: true
23+
24+
- task: Bash@3
25+
displayName: Install tools
26+
inputs:
27+
targetType: inline
28+
script: |
29+
sudo apt-get -yq install dos2unix
30+
31+
- task: UseDotNet@2
32+
displayName: Install .NET 9.0 SDK for build
33+
inputs:
34+
packageType: 'sdk'
35+
version: '9.0.x'
36+
37+
# Dump version info
38+
- task: PowerShell@2
39+
displayName: Version Information
40+
inputs:
41+
targetType: inline
42+
script: |
43+
dotnet --info
44+
try { msbuild -version } catch { }
45+
try { mono --version } catch { }
46+
47+
- powershell: ./make.ps1
48+
displayName: Build
49+
50+
- powershell: ./make.ps1 package
51+
displayName: Package
52+
53+
- task: CopyFiles@2
54+
displayName: Copy Packages
55+
inputs:
56+
SourceFolder: '$(Build.Repository.LocalPath)/Package/Release/Packages'
57+
Contents: |
58+
**/*.nupkg
59+
**/*.snupkg
60+
**/*.zip
61+
**/*.msi
62+
**/*.deb
63+
**/*.pkg
64+
TargetFolder: '$(Build.ArtifactStagingDirectory)'
65+
condition: and(succeededOrFailed(), eq(variables['system.pullrequest.isfork'], false))
66+
67+
- task: CopyFiles@2
68+
displayName: Copy Build Logs
69+
inputs:
70+
Contents: '*.binlog'
71+
TargetFolder: '$(Build.ArtifactStagingDirectory)'
72+
condition: and(succeededOrFailed(), eq(variables['system.pullrequest.isfork'], false))
73+
74+
- task: PublishBuildArtifacts@1
75+
displayName: Publish Artifacts
76+
inputs:
77+
ArtifactName: '$(osName) Artifacts'
78+
condition: and(succeededOrFailed(), eq(variables['system.pullrequest.isfork'], false))
79+
80+
- job: test
81+
strategy:
82+
matrix:
83+
linux_net462:
84+
osName: Linux
85+
imageName: ubuntu-22.04
86+
framework: net462
87+
linux_net6_0:
88+
osName: Linux
89+
imageName: ubuntu-22.04
90+
framework: net6.0
91+
linux_net8_0:
92+
osName: Linux
93+
imageName: ubuntu-22.04
94+
framework: net8.0
95+
macos_net462:
96+
osName: macOS
97+
imageName: macOS-latest
98+
framework: net462
99+
macos_net6_0:
100+
osName: macOS
101+
imageName: macOS-latest
102+
framework: net6.0
103+
macos_net8_0:
104+
osName: macOS
105+
imageName: macOS-latest
106+
framework: net8.0
107+
windows_net462:
108+
osName: Windows
109+
imageName: windows-latest
110+
framework: net462
111+
windows_net6_0:
112+
osName: Windows
113+
imageName: windows-latest
114+
framework: net6.0
115+
windows_net8_0:
116+
osName: Windows
117+
imageName: windows-latest
118+
framework: net8.0
119+
120+
condition: false
121+
displayName: Test
122+
timeoutInMinutes: 180
123+
pool:
124+
vmImage: $(imageName)
125+
126+
steps:
127+
# Prerequisites
128+
- checkout: self
129+
submodules: true
130+
131+
# Setup .NET
132+
- task: UseDotNet@2
133+
displayName: Install .NET 6.0 runtime for testing
134+
inputs:
135+
packageType: 'runtime'
136+
version: '6.0.x'
137+
- task: UseDotNet@2
138+
displayName: Install .NET 8.0 runtime for testing
139+
inputs:
140+
packageType: 'runtime'
141+
version: '8.0.x'
142+
- task: UseDotNet@2
143+
displayName: Install .NET 9.0 SDK for build
144+
inputs:
145+
packageType: 'sdk'
146+
version: '9.0.x'
147+
148+
# Build & Test
149+
- powershell: ./make.ps1
150+
displayName: Build
151+
- powershell: ./make.ps1 -frameworks $(framework) test-all
152+
displayName: Test ($(framework))
153+
154+
- task: PublishTestResults@2
155+
displayName: Publish Test Results
156+
inputs:
157+
testRunner: VSTest
158+
testResultsFiles: '**/*.trx'
159+
mergeTestResults: true
160+
testRunTitle: $(osName) - $(framework)
161+
condition: succeededOrFailed()

eng/steps.yml

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
parameters:
2-
os: ''
2+
- name: os
3+
type: string
34

45
steps:
56
- checkout: self
67
submodules: true
78

89
- powershell: |
10+
Write-Host "'${{ parameters.os }}'"
11+
Write-Host "'${{ parameters.os }}'"
12+
Write-Host "${{ eq(parameters.os, 'macOS') }}"
13+
Write-Host "$[ eq(parameters.os, 'macOS') ]"
914
1015
$xml = [xml] (Get-Content CurrentVersion.props)
1116
$major = $xml.Project.PropertyGroup.MajorVersion
@@ -56,6 +61,20 @@ steps:
5661
echo "##vso[task.setvariable variable=PKG_CONFIG_PATH;]$MONOPREFIX/lib/pkgconfig:$MONOPREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
5762
echo "##vso[task.setvariable variable=PATH;]$MONOPREFIX/bin:$PATH"
5863
64+
# Set Mono version on macOS
65+
- task: Bash@3
66+
displayName: Set Mono Version 2
67+
inputs:
68+
targetType: inline
69+
script: |
70+
# use Mono 6.4.0 version
71+
SYMLINK=6.4.0
72+
MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK
73+
echo "##vso[task.setvariable variable=DYLD_FALLBACK_LIBRARY_PATH;]$MONOPREFIX/lib:/lib:/usr/lib:$DYLD_LIBRARY_FALLBACK_PATH"
74+
echo "##vso[task.setvariable variable=PKG_CONFIG_PATH;]$MONOPREFIX/lib/pkgconfig:$MONOPREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
75+
echo "##vso[task.setvariable variable=PATH;]$MONOPREFIX/bin:$PATH"
76+
condition: eq(${{ parameters.os }}, 'macOS')
77+
5978
# Install mono when running on Linux
6079
- ${{ if eq(parameters.os, 'Linux') }}:
6180
- task: Bash@3
@@ -78,18 +97,6 @@ steps:
7897
- powershell: ./make.ps1
7998
displayName: Build
8099

81-
- powershell: ./make.ps1 test-all
82-
displayName: Test
83-
84-
- task: PublishTestResults@2
85-
displayName: Publish Test Results
86-
inputs:
87-
testRunner: VSTest
88-
testResultsFiles: '**/*.trx'
89-
mergeTestResults: true
90-
testRunTitle: ${{ parameters.os }}
91-
condition: succeededOrFailed()
92-
93100
- powershell: ./make.ps1 package
94101
displayName: Package
95102
condition: succeededOrFailed()

0 commit comments

Comments
 (0)