-
Notifications
You must be signed in to change notification settings - Fork 5k
Update OS onboarding docs #115501
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Update OS onboarding docs #115501
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,38 @@ | ||||||||||||||||
# OS Support Matrix | ||||||||||||||||
|
||||||||||||||||
.NET is a cross-platform product, requiring good coverage across [supported OSes](https://github.com/dotnet/core/blob/main/release-notes/10.0/supported-os.md). | ||||||||||||||||
|
||||||||||||||||
This document describes our coverage intent. It is a higher-level description than our pipelines. | ||||||||||||||||
|
||||||||||||||||
Pipelines: | ||||||||||||||||
|
||||||||||||||||
- [Runtime](https://github.com/dotnet/runtime/blob/main/eng/pipelines/coreclr/templates/helix-queues-setup.yml) | ||||||||||||||||
- [Libraries](https://github.com/dotnet/runtime/blob/main/eng/pipelines/libraries/helix-queues-setup.yml) | ||||||||||||||||
|
||||||||||||||||
## Run types | ||||||||||||||||
|
||||||||||||||||
We rely on multiple levels of testing to provide good coverage at reasonable cost. Our testing uses OSes both as a vehicle to test .NET itself and to validate discover distro-specific breakage. This is why we test multiple OSes for each run type. | ||||||||||||||||
|
||||||||||||||||
- Inner loop -- Baseline set of tests that validate correct functional behavior, for PRs and branch builds. | ||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe worth calling out that inner-loop for main means lots and lots of test coverage. For release branches it's just servicing fixes. FWIW, it may be simpler to remove this distinction bewteen inner-loop only/outer-loop included tiers. Main will run everything eventually, just not on PR. Release branches could be changed to do the same thing. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We need to explains:
We do not need to use tiers to do that. That was the most obvious approach. |
||||||||||||||||
- Outer loop -- A much larger set of tests that validate expected edge case behavior, for ([on-demand builds)](https://github.com/dotnet/runtime/pull/115415#issuecomment-2864759316). | ||||||||||||||||
- Extra platforms -- Additional OSes that are run in a rolling build that can target either inner our outer loop tests. | ||||||||||||||||
|
||||||||||||||||
The libraries pipeline defines these run types. The runtime pipeline has only the inner loop run type. | ||||||||||||||||
|
||||||||||||||||
The remainder of the document defines the tiers we apply to each operating system family. The tiers will be adapted over time, as needed. Architecture is another aspect of coverage. It isn't covered in this document. | ||||||||||||||||
|
||||||||||||||||
## Linux Tiers | ||||||||||||||||
|
||||||||||||||||
The following tiers apply for Linux. | ||||||||||||||||
|
||||||||||||||||
- Tier 1: Azure Linux, Debian, Ubuntu (in inner and outer loop) | ||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd invert this language. That is, define what each tier means, then classify each OS as being in a particular tier. |
||||||||||||||||
- Tier 2: Alpine and CentOS Stream (in inner loop) | ||||||||||||||||
- Tier 3: Fedora and OpenSUSE (in extra platforms) | ||||||||||||||||
Comment on lines
+28
to
+30
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||
|
||||||||||||||||
## Windows Tiers | ||||||||||||||||
|
||||||||||||||||
The following tiers apply for windows. | ||||||||||||||||
|
||||||||||||||||
- Tier 1: Windows Server 2016, Windows Server 2022, Windows Server 2025, Windows 11 | ||||||||||||||||
|
||||||||||||||||
Note: "Windows 10" references in pipelines are really Windows Server 2016. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It feels like the above section is leading with the "why" rather than the "what" -- that is, it is explaining our reasoning before mentioning the strategy. Should we invert that for people who are only interested in the "what"?