Skip to content

Commit fbfd456

Browse files
[Housekeeping] Add Benchmarks to GitHub Actions (#2452)
1 parent 6f16777 commit fbfd456

File tree

2 files changed

+130
-15
lines changed

2 files changed

+130
-15
lines changed

.github/workflows/benchmarks.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Benchmarks
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
tags:
8+
- '*'
9+
paths-ignore:
10+
- README.md
11+
pull_request:
12+
branches:
13+
- '*'
14+
15+
env:
16+
LATEST_NET_VERSION: '9.0.x'
17+
PathToCommunityToolkitAnalyzersBenchmarkCsproj: 'src/CommunityToolkit.Maui.Analyzers.Benchmarks/CommunityToolkit.Maui.Analyzers.Benchmarks.csproj'
18+
19+
jobs:
20+
run_benchmarks:
21+
name: Run Benchmarks
22+
runs-on: ${{ matrix.os }}
23+
strategy:
24+
matrix:
25+
os: [windows-latest, macos-15]
26+
27+
steps:
28+
- name: Checkout code
29+
uses: actions/checkout@main
30+
31+
- uses: maxim-lobanov/setup-xcode@v1
32+
if: runner.os == 'macOS'
33+
with:
34+
xcode-version: latest-stable
35+
36+
- name: Install Latest Version of .NET, v${{ env.LATEST_NET_VERSION }}
37+
uses: actions/setup-dotnet@v4
38+
with:
39+
dotnet-version: ${{ env.LATEST_NET_VERSION }}
40+
dotnet-quality: 'ga'
41+
42+
- name: Install .NET MAUI Workload
43+
run: |
44+
dotnet workload install maui
45+
dotnet workload update
46+
47+
- name: Install Tizen Workload
48+
run: |
49+
Invoke-WebRequest 'https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1' -OutFile 'workload-install.ps1'
50+
.\workload-install.ps1
51+
shell: pwsh
52+
53+
- name: Display dotnet info
54+
run: dotnet --info
55+
56+
- name: Run Benchmarks
57+
run: dotnet run --project ${{ env.PathToCommunityToolkitAnalyzersBenchmarkCsproj }} -c Release -- -a ${{ runner.temp }}
58+
59+
- name: Publish Benchmarks
60+
if: runner.os == 'Windows'
61+
uses: actions/upload-artifact@v4
62+
with:
63+
name: Benchmarks
64+
path: |
65+
${{ runner.temp }}/**/*.md

.github/workflows/dotnet-build.yml

Lines changed: 65 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: .NET
1+
name: Build
22

33
on:
44
push:
@@ -42,7 +42,7 @@ env:
4242
PathToCommunityToolkitCameraAnalyzersCodeFixCsproj: 'src/CommunityToolkit.Maui.Camera.Analyzers.CodeFixes/CommunityToolkit.Maui.Camera.Analyzers.CodeFixes.csproj'
4343
PathToCommunityToolkitMediaElementAnalyzersCodeFixCsproj: 'src/CommunityToolkit.Maui.MediaElement.Analyzers.CodeFixes/CommunityToolkit.Maui.MediaElement.Analyzers.CodeFixes.csproj'
4444
PathToCommunityToolkitAnalyzersUnitTestCsproj: 'src/CommunityToolkit.Maui.Analyzers.UnitTests/CommunityToolkit.Maui.Analyzers.UnitTests.csproj'
45-
DotNetMauiRollbackFile: 'https://maui.blob.core.windows.net/metadata/rollbacks/8.0.6.json'
45+
PathToCommunityToolkitAnalyzersBenchmarkCsproj: 'src/CommunityToolkit.Maui.Analyzers.Benchmarks/CommunityToolkit.Maui.Analyzers.Benchmarks.csproj'
4646
CommunityToolkitSampleApp_Xcode_Version: '16.2'
4747
CommunityToolkitLibrary_Xcode_Version: '16.2'
4848

@@ -60,15 +60,20 @@ jobs:
6060
- name: Set Xcode version
6161
if: runner.os == 'macOS'
6262
run: |
63+
echo Installed Xcode Versions:
64+
ls -al /Applications | grep Xcode
6365
sudo xcode-select --switch /Applications/Xcode_${{ env.CommunityToolkitSampleApp_Xcode_Version }}.app/Contents/Developer
6466
65-
- name: Install Latest .NET SDK
66-
uses: actions/setup-dotnet@v3
67+
- name: Install Latest .NET SDK, v${{ env.LATEST_NET_VERSION }}
68+
uses: actions/setup-dotnet@v4
6769
with:
6870
dotnet-version: ${{ env.LATEST_NET_VERSION }}
71+
dotnet-quality: 'ga'
6972

7073
- name: Install .NET MAUI Workload
71-
run: dotnet workload install maui
74+
run: |
75+
dotnet workload install maui
76+
dotnet workload update
7277
7378
- name: Install Tizen Workload
7479
run: |
@@ -85,6 +90,8 @@ jobs:
8590
build_library:
8691
name: Build Library
8792
runs-on: ${{ matrix.os }}
93+
env:
94+
VSTEST_TESTHOST_SHUTDOWN_TIMEOUT: 1100 # Fixes "The active test run was aborted. Reason: Test host process crashed"
8895
strategy:
8996
matrix:
9097
os: [windows-latest, macos-15]
@@ -119,15 +126,20 @@ jobs:
119126
- name: Set Xcode version
120127
if: runner.os == 'macOS'
121128
run: |
129+
echo Installed Xcode Versions:
130+
ls -al /Applications | grep Xcode
122131
sudo xcode-select --switch /Applications/Xcode_${{ env.CommunityToolkitLibrary_Xcode_Version }}.app/Contents/Developer
123132
124-
- name: Install .NET SDK
125-
uses: actions/setup-dotnet@v3
133+
- name: Install .NET SDK v${{ env.TOOLKIT_NET_VERSION }}
134+
uses: actions/setup-dotnet@v4
126135
with:
127136
dotnet-version: ${{ env.TOOLKIT_NET_VERSION }}
137+
dotnet-quality: 'ga'
128138

129139
- name: Install .NET MAUI Workload
130-
run: dotnet workload install maui --skip-sign-check --source https://api.nuget.org/v3/index.json
140+
run: |
141+
dotnet workload install maui
142+
dotnet workload update
131143
132144
- name: Install Tizen Workload
133145
run: |
@@ -138,10 +150,46 @@ jobs:
138150
- name: Display dotnet info
139151
run: dotnet --info
140152

141-
- name: Build CommunityToolkit.Maui
142-
run: dotnet build -c Release ${{ env.PathToLibrarySolution }}
153+
- name: 'Build CommunityToolkit.Maui.Analyzers'
154+
run: dotnet build ${{ env.PathToCommunityToolkitAnalyzersCsproj }} -c Release
155+
156+
- name: 'Build CommunityToolkit.Maui.Analyzers.CodeFixes'
157+
run: dotnet build ${{ env.PathToCommunityToolkitAnalyzersCodeFixCsproj }} -c Release
158+
159+
- name: 'Build CommunityToolkit.Maui.Camera.Analyzers'
160+
run: dotnet build ${{ env.PathToCommunityToolkitCameraAnalyzersCsproj }} -c Release
161+
162+
- name: 'Build CommunityToolkit.Maui.Camera.Analyzers.CodeFixes'
163+
run: dotnet build ${{ env.PathToCommunityToolkitCameraAnalyzersCodeFixCsproj }} -c Release
164+
165+
- name: 'Build CommunityToolkit.Maui.MediaElement.Analyzers'
166+
run: dotnet build ${{ env.PathToCommunityToolkitMediaElementAnalyzersCsproj }} -c Release
167+
168+
- name: 'Build CommunityToolkit.Maui.MediaElement.Analyzers.CodeFixes'
169+
run: dotnet build ${{ env.PathToCommunityToolkitMediaElementAnalyzersCodeFixCsproj }} -c Release
143170

144-
- name: Run CommunityToolkit.Maui.UnitTests
171+
- name: 'Build CommunityToolkit.Maui.SourceGenerators'
172+
run: dotnet build ${{ env.PathToCommunityToolkitSourceGeneratorsCsproj }} -c Release
173+
174+
- name: 'Build CommunityToolkit.SourceGenerators.Internal'
175+
run: dotnet build ${{ env.PathToCommunityToolkitSourceGeneratorsInternalCsproj }} -c Release
176+
177+
- name: 'Build CommunityToolkit.Maui.Camera'
178+
run: dotnet build ${{ env.PathToCommunityToolkitCameraCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersionCamera }} -p:Version=${{ env.NugetPackageVersion }}
179+
180+
- name: 'Build CommunityToolkit.Maui.MediaElement'
181+
run: dotnet build ${{ env.PathToCommunityToolkitMediaElementCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersionMediaElement }} -p:Version=${{ env.NugetPackageVersion }}
182+
183+
- name: 'Build CommunityToolkit.Maui.Maps'
184+
run: dotnet build ${{ env.PathToCommunityToolkitMapsCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersionMaps }} -p:Version=${{ env.NugetPackageVersion }}
185+
186+
- name: 'Build CommunityToolkit.Maui.Core'
187+
run: dotnet build ${{ env.PathToCommunityToolkitCoreCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersion }} -p:Version=${{ env.NugetPackageVersion }}
188+
189+
- name: 'Build CommunityToolkit.Maui'
190+
run: dotnet build ${{ env.PathToLibrarySolution }} -c Release -p:PackageVersion=${{ env.NugetPackageVersion }} -p:Version=${{ env.NugetPackageVersion }}
191+
192+
- name: Run All Unit Tests
145193
run: dotnet test -c Release ${{ env.PathToLibrarySolution }} --settings ".runsettings" --collect "XPlat code coverage" --logger trx --results-directory ${{ runner.temp }}
146194

147195
- name: Publish Test Results
@@ -198,10 +246,11 @@ jobs:
198246
id-token: write # Required for requesting the JWT
199247

200248
steps:
201-
- name: Install .NET SDK
202-
uses: actions/setup-dotnet@v3
249+
- name: Install .NET SDK v${{ env.TOOLKIT_NET_VERSION }}
250+
uses: actions/setup-dotnet@v4
203251
with:
204252
dotnet-version: ${{ env.TOOLKIT_NET_VERSION }}
253+
dotnet-quality: 'ga'
205254

206255
- name: Download NuGet List
207256
uses: actions/download-artifact@v4
@@ -251,9 +300,10 @@ jobs:
251300

252301
steps:
253302
- name: Install .NET SDK
254-
uses: actions/setup-dotnet@v3
303+
uses: actions/setup-dotnet@v4
255304
with:
256305
dotnet-version: ${{ env.TOOLKIT_NET_VERSION }}
306+
dotnet-quality: 'ga'
257307

258308
- name: Download signed packages for ${{ matrix.platform }}
259309
uses: actions/download-artifact@v4
@@ -267,4 +317,4 @@ jobs:
267317
**/*.nupkg
268318
--source https://api.nuget.org/v3/index.json
269319
--api-key ${{ secrets.NUGET_PACKAGE_PUSH_TOKEN }}
270-
--skip-duplicate
320+
--skip-duplicate

0 commit comments

Comments
 (0)