SERVER-88198 Document how to classify variants that exist in evergreen configurations (#21085)

GitOrigin-RevId: 96666fcd50d572645e503bae5aeb4b56a441d529
This commit is contained in:
Mikhail Shchatko 2024-04-15 09:23:31 +03:00 committed by MongoDB Bot
parent 68be114c66
commit 00e72a2ed3
2 changed files with 69 additions and 0 deletions

View File

@ -9,5 +9,6 @@ Documentation about how MongoDB is tested in Evergreen.
- [Multiversion Testing](multiversion.md)
- YAML configuration
- [Configuration for Evergreen Integration](yaml_configuration/configuration.md)
- [Build Variants](yaml_configuration/buildvariants.md)
- [Task ownership tags](yaml_configuration/task_ownership_tags.md)
- [Task selection tags](yaml_configuration/task_selection_tags.md)

View File

@ -0,0 +1,68 @@
# Build Variants
This document describes build variants (a.k.a. variants, or builds, or buildvariants) that are used in `mongodb-mongo-*` projects.
To know more about build variants, please refer to the [Build Variants](https://docs.devprod.prod.corp.mongodb.com/evergreen/Project-Configuration/Project-Configuration-Files#build-variants) section of the Evergreen wiki.
## YAML files structure
Build variant configuration files are in `etc/evergreen_yml_components/variants` directory.
They are merged into `etc/evergreen.yml` and `etc/evergreen_nightly.yml` with Evergreen's [include](https://docs.devprod.prod.corp.mongodb.com/evergreen/Project-Configuration/Project-Configuration-Files#include) feature.
Inside `etc/evergreen_yml_components/variants` directory there are more directories,
which are in most cases platform names (e.g. amazon, rhel etc.) or build variant group names (e.g. sanitizer etc.).
Be aware that some of these files could be also used or re-used to be merged into `etc/system_perf.yml` which is used for `sys-perf` project.
## Build Variants in `mongodb-mongo-master` and `mongodb-mongo-master-nightly`
`mongodb-mongo-master` evergreen project uses `etc/evergreen.yml` and contains all build variants for development, including all feature-specific, patch build required, and suggested variants.
`mongodb-mongo-master-nightly` evergreen project uses `etc/evergreen_nightly.yml` and contains build variants for public nightly builds.
## Required and Suggested Build Variants
"Required" build variants are defined as any build variant with a `!` at the front of its display name in Evergreen.
These build variants also have `required` tag.
[Required Patch Builds Policy](https://wiki.corp.mongodb.com/display/KERNEL/Required+Patch+Builds+Policy)
"Suggested" build variants are defined as any build variant with a `*` at the front of its display name in Evergreen.
These build variants also have `suggested` tag.
## Build Variants after branching
In each of platform or build variant group directory there can be these files:
- `test_dev.yml`
- these files are merged into `etc/evergreen.yml` which is used for `mongodb-mongo-master` project on master branch
- after branching on all new branches these files are merged into `etc/evergreen_nightly.yml` which is used for a new branch `mognodb-mongo-vX.Y` project
- `test_dev_master_and_lts_branches_only.yml`
- these files are merged into `etc/evergreen.yml` which is used for `mongodb-mongo-master` project on master branch
- after branching for LTS release (v7.0, v8.0 etc.) on a new branch these files are merged into `etc/evergreen_nightly.yml` which is used for a new branch `mognodb-mongo-vX.Y` project
- **important**: all tests that are running on these build variants will NOT run on a new Rapid release (v7.1, v7.2, v7.3, v8.1, v8.2, v8.3 etc.) branch projects
- `test_dev_master_branch_only.yml`
- these files are merged into `etc/evergreen.yml` which is used for `mongodb-mongo-master` project on master branch
- after branching on all new branches these files are NOT used
- **important**: all tests that are running on these build variants will NOT run on a new branch projects
- `test_release.yml`
- these files are merged into `etc/evergreen_nightly.yml` which is used for `mongodb-mongo-master-nightly` project on master branch
- after branching on all new branches these files are merged into `etc/evergreen_nightly.yml` which is used for a new branch `mognodb-mongo-vX.Y` project
- `test_release_master_and_lts_branches_only.yml`
- these files are merged into `etc/evergreen_nightly.yml` which is used for `mongodb-mongo-master-nightly` project on master branch
- after branching for LTS release (v7.0, v8.0 etc.) on a new branch these files are merged into `etc/evergreen_nightly.yml` which is used for a new branch `mognodb-mongo-vX.Y` project
- **important**: all tests that are running on these build variants will NOT run on a new Rapid release (v7.1, v7.2, v7.3, v8.1, v8.2, v8.3 etc.) branch projects
- `test_release_master_branch_only.yml`
- these files are merged into `etc/evergreen_nightly.yml` which is used for `mongodb-mongo-master-nightly` project on master branch
- after branching on all new branches these files are NOT used
- **important**: all tests that are running on these build variants will NOT run on a new branch projects