Skip to content

Commit 9f0ed55

Browse files
MichaelSimonslbussellmthalman
authored
Add Guidelines for Platforms Tested in CI (#3726)
* Add Guidelines for Platforms Tested in CI * Apply suggestions from code review Co-authored-by: Logan Bussell <[email protected]> * Misc edits * Update Documentation/ci-platform-coverage-guidelines.md Co-authored-by: Matt Thalman <[email protected]> * 'supported' clarity * Add clarity on distro versions * Update Documentation/ci-platform-coverage-guidelines.md Co-authored-by: Matt Thalman <[email protected]> --------- Co-authored-by: Logan Bussell <[email protected]> Co-authored-by: Matt Thalman <[email protected]>
1 parent 5662042 commit 9f0ed55

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Guidelines for Platforms Tested in CI
2+
3+
This document contains the guidelines for which platforms (OS and architectures) to test in
4+
the source build CI.
5+
6+
## Distro Families
7+
8+
1. Prefer testing base distros of families over derivatives.
9+
1. Prioritize testing distros that source build .NET.
10+
1. Use CentOS Stream instead of Red Hat because it is the free alternative.
11+
1. Include a permutation of distros for the supported C standard library implementations
12+
(e.g. glibc and musl).
13+
1. Only test [distros that are officially supported by .NET](https://github.com/dotnet/core/blob/main/os-lifecycle-policy.md#net-supported-os-policy).
14+
Community supported distros will not be covered.
15+
16+
**Note:** There will be conflicts within these guidelines. When they occur, it is an indication
17+
that multiple legs will be needed. For example, Ubuntu is based on Debian. However, .NET is included
18+
in Ubuntu's repositories by default but not Debian's (at the time of writing). As such, it is best
19+
to include legs for both Ubuntu and Debian.
20+
21+
## Distro Versions
22+
23+
When selecting which distro versions to test the .NET version in development, it is important to take into account which distro versions will be in support at the time of the .NET release. Don't worry about testing .NET on distro versions that will be or nearing EOL on the .NET release day.
24+
25+
1. Latest LTS version. If the distro doesn't have an LTS notion, then test latest.
26+
1. Oldest version that will be in-support for the lifetime of the .NET release.
27+
28+
## Architectures
29+
30+
1. Amd64
31+
1. Arm64
32+
33+
## Permutations
34+
35+
It is not the intent to test every permutation of distro family, distro version, and architecture.
36+
Rather, smart decisions should be made to utilize resources. For example, test the oldest LTS version
37+
of Debian on amd64 and the latest LTS version of Ubuntu on arm64.
38+
39+
1. CentOS Stream
40+
1. Newest in support version
41+
1. Oldest in support version (for the lifetime of .NET)
42+
1. Fedora - Newest in support version
43+
1. Debian - Oldest LTS version (for the lifetime of .NET)
44+
1. Ubuntu - Newest LTS version (arm64)
45+
1. Alpine - Newest in support version

Documentation/package-dependency-flow.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ ability to service the product.
4242

4343
## Package Versions
4444

45-
Package dependencies that defined using
46-
[Arcade's Darc patterns](https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md)
45+
Package dependencies defined using
46+
[Arcade's dependency patterns](https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md)
4747
will get lifted dynamically during a source build if the following conditions are met:
4848

4949
1. The dependency is declared in the Version.Details.xml file.
@@ -83,7 +83,7 @@ This reference does not have to be direct, it can be transitive.
8383

8484
When these conditions are met during a source build, the infrastructure will scan
8585
the Version.Details.xml file and dynamically create two new Versions.props files
86-
containing updated version properties for all non-pinned dependencies.
86+
containing updated version properties for all non-pinned dependencies.
8787

8888
**PackageVersions.Previous.props:** This will contain version properties with the
8989
package versions from the [previous release of source build](#previous-source-built-packages).

0 commit comments

Comments
 (0)