-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
DevProd Build
-
Fully Compatible
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
We currently do not have a way of easily supporting multiple MSVC versions in CI. From what I gather, until recently all Windows images have always used a consistent MSVC version to test all actively maintained versions of the MongoDB server. This architecture has the significant disadvantage of making it difficult or impossible to use newer versions of MSVC on master than on prior releases; as long as we are effectively required to stay on an older version of MSVC across all our branches, we are unable to capture the full benefits of upgrades to our Linux toolchain vis-a-vis compiler support for modern language features.
The immediate need is to support one MSVC version on all currently released versions, and another on master for DEVPROD-14389. This immediate need could be solved by simply creating a mirrored copy of each Windows image which uses a sufficiently recent MSVC version and then updating CI to test master against those images. However, it may be the case that we will want to upgrade MSVC again fairly soon, as it's possible that the v5.1 toolchain upgrade (SPM-3936) may upgrade some of the compilers again. It's also possible that MSVC will need to be bumped for other compiler features we end up wanting to take advantage of.
Maintaining older branches on the versions of MSVC that they are validated for is important for their stable releasability. DEVPROD-14389 ended up unintentionally causing redness in CI for some of our released branches because the new version was propagated implicitly to the old branches.
I'd like us to consider putting some thought into some infrastructure that will make it easy for devprod to create new images that use a newer MSVC version than has been used prior, and for server to control which MSVC version is used to validate each branch. That way, the burden on devprod to introduce new MSVC versions is minimized, and server can have autonomy over when MSVC upgrades effectively occur in CI. Ideally, these images will make it easy to find out which version of MSVC is in use at any point in time, perhaps via some queryable metadata or by embedding the version in the image name. This would make it easy for server to maintain an awareness of the MSVC version and evaluate compiler feature support.
- depends on
-
SERVER-104169 Add a custom windows toolchain for 10gen/mongo
-
- Closed
-
- is depended on by
-
SERVER-103502 Update to latest windows images
-
- Blocked
-
- related to
-
SERVER-105041 Pin the MSVC version on released branches
-
- In Progress
-
-
SERVER-102731 Point Build System at OSS Clang on MacOS 14 Variants
-
- Open
-