CommunityToolkit / CommunityToolkit/Labs-Windows
Optimize Build Jobs
- Dominant language
- C#
- Stars
- 482
- Forks
- 89
- PR merge metrics
- No merged PRs in 30d
Description
### Describe the bug
Currently our WinUI2 build is taking like 90 minutes... 😟
We should split things up to ensure we can have quicker response times on feedback for the CI.
Related issues CommunityToolkit/Labs-Windows#66, CommunityToolkit/Labs-Windows#133, CommunityToolkit/Tooling-Submodule#9, (and CommunityToolkit/Tooling-Submodule#6)
We can try and mitigate this in a few ways:
- [ ] Split up building experiments as NuGet packages from rest of build, this does a few things:
- Means we can have them as a separate dependent job
- Only build them once
- Include as artifacts to the build
- Run tests on them independently
- [ ] In PR, If tests pass, push to a nuget feed so they can be poked while rest of CI builds still more quickly
- [ ] Use NuGet packages vs. ProjectReferences in the CI lets us: (ties into CommunityToolkit/Labs-Windows#133)
- [ ] Separate tests out as an independent job for quicker results
- [ ] Separate matrix for each runtime **_and platform_**'s sample app to build independently as a separate job
- Hopefully, reduces Memory pressure on CI for CommunityToolkit/Tooling-Submodule#9
- [ ] Detect which things have changed (#66)
- [ ] Only build the new-experiment job if the common/template folders or root config files have changed
- [ ] Have a job which only builds the solution for the experiment(s) that have been modified
- [ ] Only update NuGet package(s) of changed experiments
- [ ] Have a job which builds/tests the infrastructure of labs vs. doing that along with other jobs (if any of it has been touched)
- [ ] Smoke Tests - Check packages work on target frameworks (with NuGet packages and scoping above)
- [ ] with new uno templates from dotnet new (Uno.UI & Uno.WinUI)
- [ ] with new base UWP/WinAppSDK templates
- [ ] Check binary package size changes (i.e. measure footprint)
### Steps to reproduce
```text
Run build...
```
### Expected behavior
Faster feedback
### Screenshots
_No response_
### Code Platform
- [ ] UWP
- [ ] WinAppSDK / WinUI 3
- [ ] Web Assembly (WASM)
- [ ] Android
- [ ] iOS
- [ ] MacOS
- [ ] Linux / GTK
### Windows Build Number
- [ ] Windows 10 1809 (Build 17763)
- [ ] Windows 10 1903 (Build 18362)
- [ ] Windows 10 1909 (Build 18363)
- [ ] Windows 10 2004 (Build 19041)
- [ ] Windows 10 20H2 (Build 19042)
- [ ] Windows 10 21H1 (Build 19043)
- [ ] Windows 11 21H2 (Build 22000)
- [ ] Other (specify)
### Other Windows Build number
_No response_
### App minimum and target SDK version
- [ ] Windows 10, version 1809 (Build 17763)
- [ ] Windows 10, version 1903 (Build 18362)
- [ ] Windows 10, version 1909 (Build 18363)
- [ ] Windows 10, version 2004 (Build 19041)
- [ ] Other (specify)
### Other SDK version
_No response_
### Visual Studio Version
_No response_
### Visual Studio Build Number
_No response_
### Device form factor
_No response_
### Additional context
_No response_
### Help us help you
Yes, but only if others can assist.
Contributor guide
Assessment
This issue has not been assessed yet.