[7.0] Create stress test pipeline#4118
[7.0] Create stress test pipeline#4118paulmedynski wants to merge 1 commit intocherry-pick/7.0/4087from
Conversation
* Task 40503: Create stress test pipeline - Added initial placeholder pipeline entry point file. - Wired up the new top-level stress test pipeline to the existing stages/jobs. - Using human friendly triggering pipeline names. - Removed PR pipeline as upstream trigger. - When triggered manually, we must choose one of the upstream pipelines to use for artifact download. - Temporarily added PR-SqlClient-Package to help with PR-based testing. - Sorted template parameters alphabetically. - Added debugging for artifact details. * Changed the pipeline to expect project-references to SqlClient projects. * Moved stress test pipeline files into a stress/ directory. * Fixed expansion errors. * Addressed Copilot feedback. * Addressed my own comments.
There was a problem hiding this comment.
Pull request overview
This PR introduces a dedicated Azure DevOps stress-test pipeline triggered by successful PR/CI project-reference runs, while removing stress testing hooks from the existing PR/CI pipelines. It also includes related build/packaging refactors (notably MDS versioning/output-path changes) required to support the updated pipeline and artifact layout.
Changes:
- Add new stress pipeline + stage/job templates under
eng/pipelines/stress/, triggered via pipeline resources (and remove the old placeholder stress pipeline/stage/job). - Refactor MDS versioning into
src/Microsoft.Data.SqlClient/MdsVersions.propsand update csproj output paths + nuspec packing paths accordingly. - Enable/refine XML doc generation + trimming and fix multiple DocFX
<include>path references.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tools/targets/GenerateThisAssemblyCs.targets | Default AssemblyFileVersion to AssemblyVersion when not provided. |
| tools/specs/Microsoft.Data.SqlClient.nuspec | Update packaged file paths to new artifacts layout; reorganize lib/ref/runtime assets. |
| tools/props/Versions.props | Remove in-file MDS versioning block; defer to MdsVersions.props. |
| tools/intellisense/TrimDocs.ps1 | Fail fast on missing XML input (throw + $ErrorActionPreference='Stop'). |
| src/Microsoft.Data.SqlClient/tests/StressTests/StressTests.slnx | Remove the .slnx solution file. |
| src/Microsoft.Data.SqlClient/tests/StressTests/Readme.md | Update stress test build/run guidance (project-based) and supported frameworks list. |
| src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlTypes/SqlVector.cs | Fix DocFX <include> relative paths; whitespace cleanup. |
| src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlTypes/SqlJson.cs | Fix DocFX <include> relative paths; formatting cleanup. |
| src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlDbTypeExtensions.cs | Fix DocFX <include> relative paths. |
| src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlDataReader.cs | Fix DocFX <include> relative paths; whitespace cleanup. |
| src/Microsoft.Data.SqlClient/src/Microsoft.Data.SqlClient.csproj | Enable doc generation, import MdsVersions.props, and change OutputPath to include $(ReferenceType)-$(Configuration). |
| src/Microsoft.Data.SqlClient/ref/Microsoft.Data.SqlClient.csproj | Enable doc generation, import MdsVersions.props, update OutputPath, and gate TrimDocs target appropriately. |
| src/Microsoft.Data.SqlClient/ref/Microsoft.Data.SqlClient.cs | Fix DocFX <include> relative paths and minor whitespace. |
| src/Microsoft.Data.SqlClient/notsupported/Microsoft.Data.SqlClient.csproj | Import MdsVersions.props, align OutputPath and ref artifact path with new layout. |
| src/Microsoft.Data.SqlClient/MdsVersions.props | New centralized MDS versioning props (assembly + package versions). |
| src/Microsoft.Data.SqlClient.sln | Update SolutionItems; add MdsVersions.props and onebranch items; still references old stress pipeline path. |
| eng/pipelines/stress/stress-tests-stage.yml | New stress stage template running Linux/Windows/macOS stress jobs. |
| eng/pipelines/stress/stress-tests-pipeline.yml | New stress pipeline definition triggered via pipeline resources. |
| eng/pipelines/stress/stress-tests-job.yml | New stress job template building/running stress tests per runtime/OS. |
| eng/pipelines/stress-tests-pipeline.yml | Remove old placeholder stress pipeline. |
| eng/pipelines/stages/stress-tests-ci-stage.yml | Remove old stress stage that ran against packaged artifacts. |
| eng/pipelines/sqlclient-pr-project-ref-pipeline.yml | Remove enableStressTests; exclude eng/pipelines/stress/* path; disable legacy SQL tests on PRs. |
| eng/pipelines/sqlclient-pr-package-ref-pipeline.yml | Same as above for package-ref PR pipeline. |
| eng/pipelines/jobs/test-azure-package-ci-job.yml | Fix job comment to match actual job purpose; remove outdated stress-solution wording. |
| eng/pipelines/jobs/test-abstractions-package-ci-job.yml | Same comment cleanup as above. |
| eng/pipelines/jobs/stress-tests-ci-job.yml | Remove old stress job that restored/built the stress solution + ran against artifacts. |
| eng/pipelines/jobs/pack-azure-package-ci-job.yml | Remove outdated stress-solution wording in PLATFORM override comment. |
| eng/pipelines/jobs/pack-abstractions-package-ci-job.yml | Remove outdated stress-solution wording in PLATFORM override comment. |
| eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml | Remove enableStressTests parameter wiring. |
| eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml | Remove enableStressTests parameter wiring. |
| eng/pipelines/dotnet-sqlclient-ci-core.yml | Remove stress stage injection; add runLegacySqlTests parameter and legacy SQL 2016/2017 test configurations. |
| eng/pipelines/common/templates/steps/run-all-tests-step.yml | Switch test execution from build.proj to build2.proj targets + new test property names. |
| eng/pipelines/common/templates/steps/ci-project-build-step.yml | Switch build to build2.proj (BuildMds) and update property names. |
| build2.proj | Add/extend PackMds; adjust build/test targets and arguments; introduce signing arg; refactor paths. |
| # Install the .NET SDK and Runtimes. | ||
| - template: /eng/pipelines/steps/install-dotnet.yml@self | ||
| parameters: | ||
| runtimes: [8.x, 9.x] |
There was a problem hiding this comment.
This job installs only the 8.x and 9.x runtimes, but the stress stage defaults netTestRuntimes to include net10.0. Unless the agent images already include .NET 10, the dotnet run -f net10.0 steps will fail. Consider installing 10.x here or removing net10.0 from the default runtime list.
| runtimes: [8.x, 9.x] | |
| runtimes: [8.x, 9.x, 10.x] |
Cherry-pick of #3867 to release/7.0
Depends on #4115
Original PR Description
Description
This PR adds a dedicated stress pipeline, and removes stress testing from all other pipelines. The new pipeline is triggered by successful runs of the PR/CI project-reference pipelines. It will not prevent PRs from merging.
Testing
We won't be able to test this new pipeline due to limitations in Azure DevOps that require the YAML file exist on the default branch before you can create a pipeline. So we expect a follow-up PR to fine-tune things once the new stress-tests-pipeline.yml file merges to main.