Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Documentation/ci-platform-coverage-guidelines.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Guidelines for Platforms Tested in CI

This document contains the guidelines for which platforms (OS and architectures) to test in
the source build CI.

## Distro Families

1. Prefer testing base distros of families over derivatives.
1. Prioritize testing distros that source build .NET.
1. Use CentOS Stream instead of Red Hat because it is the free alternative.
1. Include a permutation of distros for the supported C standard library implementations
(e.g. glibc and musl).
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).
Community supported distros will not be covered.

**Note:** There will be conflicts within these guidelines. When they occur, it is an indication
that multiple legs will be needed. For example, Ubuntu is based on Debian. However, .NET is included
in Ubuntu's repositories by default but not Debian's (at the time of writing). As such, it is best
to include legs for both Ubuntu and Debian.

## Distro Versions

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.

1. Latest LTS version. If the distro doesn't have an LTS notion, then test latest.
1. Oldest version that will be in-support for the lifetime of the .NET release.

## Architectures

1. Amd64
1. Arm64

## Permutations

It is not the intent to test every permutation of distro family, distro version, and architecture.
Rather, smart decisions should be made to utilize resources. For example, test the oldest LTS version
of Debian on amd64 and the latest LTS version of Ubuntu on arm64.

1. CentOS Stream
1. Newest in support version
1. Oldest in support version (for the lifetime of .NET)
1. Fedora - Newest in support version
1. Debian - Oldest LTS version (for the lifetime of .NET)
1. Ubuntu - Newest LTS version (arm64)
1. Alpine - Newest in support version
6 changes: 3 additions & 3 deletions Documentation/package-dependency-flow.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ ability to service the product.

## Package Versions

Package dependencies that defined using
[Arcade's Darc patterns](https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md)
Package dependencies defined using
[Arcade's dependency patterns](https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I missed committing this change in my last doc update so I am including it here.

will get lifted dynamically during a source build if the following conditions are met:

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

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

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