Add CI job for 2-stage build with -mt mode#13124
Conversation
|
Hello @@copilot, I noticed that you’re changing an .swr file or any file under src/Package/MSBuild.VSSetup.. Please make sure to validate this change by an experimental VS insertion. This is accomplished by pushing to an exp/* branch, which requires write permissions to this repo. |
Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
|
the job is failing @copilot Check failure on line 72 in .dotnet\sdk\10.0.101\Microsoft.Common.CrossTargeting.targets @azure-pipelines .dotnet\sdk\10.0.101\Microsoft.Common.CrossTargeting.targets(72,5): error MSB3202: The project file "Microsoft.Build.Framework.csproj" was not found. @azure-pipelines .dotnet\sdk\10.0.101\Microsoft.Common.CrossTargeting.targets(72,5): error MSB3202: The project file "Microsoft.Build.Framework.csproj" was not found. @azure-pipelines .dotnet\sdk\10.0.101\Microsoft.Common.CrossTargeting.targets(72,5): error MSB3202: The project file "Microsoft.Build.Framework.csproj" was not found. @azure-pipelines .dotnet\sdk\10.0.101\Microsoft.Common.CurrentVersion.targets(1844,5): error MSB3202: (NETCORE_ENGINEERING_TELEMETRY=Build) The project file "..\Framework\Microsoft.Build.Framework.csproj" was not found. @azure-pipelines .dotnet\sdk\10.0.101\Microsoft.Common.CurrentVersion.targets(1844,5): error MSB3202: (NETCORE_ENGINEERING_TELEMETRY=Build) The project file "..\Utilities\Microsoft.Build.Utilities.csproj" was not found. |
Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
Fixed in a0f9761. The issue was that Added a new |
|
@copilot I don't want this new CI job to run tests, only do the 2 stage build and upload logs from building |
Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
Fixed in 567faf6. Added a new |
There was a problem hiding this comment.
Pull request overview
This PR adds CI validation for MSBuild's experimental -mt (multithreaded) mode by introducing a new Windows CI job that performs a 2-stage bootstrap build with the /mt flag applied only to the second stage.
Changes:
- Added new CI job
BootstrapMSBuildWithMTModethat builds MSBuild using the dotnet engine with/mtflag in Stage 2 - Extended
cibuild_bootstrapped_msbuild.ps1withskipTestsswitch andstage2Propertiesparameter to support custom Stage 2-only MSBuild properties - Stage 1 intentionally excludes
stage2Propertiessince/mtis incompatible with the SDK MSBuild used in Stage 1
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.vsts-dotnet-ci.yml |
Adds new CI job BootstrapMSBuildWithMTMode on Windows 2022 that performs 2-stage build with /mt flag, publishes build logs, and skips tests |
eng/cibuild_bootstrapped_msbuild.ps1 |
Adds skipTests switch and stage2Properties string array parameter; applies stage2Properties only to Stage 2 builds with clear comments explaining the exclusion from Stage 1 |
|
@copilot make the job run on linux instead |
Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
|
ready to go, validated by looking at binlog, -mt was indeed used |
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
Context
End-to-end validation is needed for MSBuild's experimental
-mt(multithreaded) mode. Currently no CI check verifies that MSBuild can build itself using this mode.Changes Made
Added new CI job
BootstrapMSBuildWithMTModein.vsts-dotnet-ci.yml:/mtflag passed only to Stage 2 (bootstrapped MSBuild)ubuntu-latest) for faster/cheaper buildsAdded new parameters to
cibuild_bootstrapped_msbuild.sh:--stage2Properties: Allows passing MSBuild properties only to Stage 2 (the bootstrapped build)--skipTests: Switch to skip running tests in Stage 2Testing
YAML syntax validated. The job itself validates the feature by building MSBuild with
-mtmode on each PR.Notes
The
/mtflag is passed via the new--stage2Propertiesparameter which is only splatted to Stage 2 builds. This is necessary because the/mtswitch is not compatible with the SDK MSBuild used in Stage 1.The
--skipTestsswitch ensures the CI job only performs the 2-stage build and uploads logs, without running the full test suite.Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.