diff --git a/eng/pipelines/dotnet-sqlclient-ci-core.yml b/eng/pipelines/dotnet-sqlclient-ci-core.yml index 107eb5e6f6..0edebee7c7 100644 --- a/eng/pipelines/dotnet-sqlclient-ci-core.yml +++ b/eng/pipelines/dotnet-sqlclient-ci-core.yml @@ -25,6 +25,26 @@ parameters: type: object default: [net8.0, net9.0, net10.0] + # The target frameworks to build and run tests for on Windows, for the + # primary test configurations (local SQL Server 2025 and Azure SQL). + # + # These configurations carry the broadest coverage, so newer runtimes are + # validated here first before being enabled across every configuration. + # + # Note: The driver does not ship a net10.0 target framework, so net10.0 test + # assemblies resolve the net9.0 driver build. Including net10.0 here + # validates the driver running on the .NET 10 runtime. + # + - name: primaryTargetFrameworks + type: object + default: [net462, net8.0, net9.0, net10.0] + + # The target frameworks to build and run tests for on Unix, for the primary + # test configurations (local SQL Server 2025 and Azure SQL). + - name: primaryTargetFrameworksUnix + type: object + default: [net8.0, net9.0, net10.0] + # Netcore Version for Test Utilities - name: netcoreVersionTestUtils type: object @@ -421,7 +441,7 @@ stages: pool: ${{parameters.defaultPoolName }} images: Win25_Sql25: ADO-MMS25-SQL25 - TargetFrameworks: ${{parameters.targetFrameworks }} + TargetFrameworks: ${{parameters.primaryTargetFrameworks }} netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }} buildPlatforms: ${{parameters.buildPlatforms }} testSets: ${{parameters.testSets }} @@ -494,7 +514,7 @@ stages: images: Win22_Azure_Sql: ADO-MMS22-SQL19 Win11_Azure_Sql: ADO-CI-Win11 - TargetFrameworks: ${{parameters.targetFrameworks }} + TargetFrameworks: ${{parameters.primaryTargetFrameworks }} netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }} buildPlatforms: ${{parameters.buildPlatforms }} testSets: ${{parameters.testSets }} @@ -551,7 +571,7 @@ stages: pool: ${{parameters.defaultPoolName }} images: Ubuntu24_Sql25: ADO-UB24-SQL25 - TargetFrameworks: ${{parameters.targetFrameworksUnix }} + TargetFrameworks: ${{parameters.primaryTargetFrameworksUnix }} netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }} buildPlatforms: [AnyCPU] testSets: ${{parameters.testSets }} @@ -574,7 +594,7 @@ stages: pool: ${{parameters.defaultPoolName }} images: Ubuntu24_Azure_Sql: ADO-UB24-SQL25 - TargetFrameworks: ${{parameters.targetFrameworksUnix }} + TargetFrameworks: ${{parameters.primaryTargetFrameworksUnix }} netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }} buildPlatforms: [AnyCPU] testSets: ${{parameters.testSets }} diff --git a/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml b/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml index 72bcf4a120..0b751ed9e9 100644 --- a/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml +++ b/eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml @@ -171,6 +171,11 @@ extends: dotnetVerbosity: ${{ parameters.dotnetVerbosity }} targetFrameworks: ${{ parameters.targetFrameworks }} targetFrameworksUnix: ${{ parameters.targetFrameworksUnix }} + # Keep the primary (SQL 2025 / Azure SQL) configurations on the same set of + # target frameworks as everything else. Only the CI-SqlClient pipeline + # opts in to the broader .NET 10.0 coverage on those configurations. + primaryTargetFrameworks: ${{ parameters.targetFrameworks }} + primaryTargetFrameworksUnix: ${{ parameters.targetFrameworksUnix }} testJobTimeout: ${{ parameters.testJobTimeout }} testSets: ${{ parameters.testSets }} useManagedSNI: ${{ parameters.useManagedSNI }} diff --git a/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml b/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml index 7b665d52c3..b3922fe27e 100644 --- a/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml +++ b/eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml @@ -110,8 +110,9 @@ parameters: # These are _not_ the target frameworks to build the driver packages for. # # Note: We are excluding .NET 10.0 here to avoid consuming too many resources - # during PR pipeline runs, and until we update our 1ES images to include - # Visual Studio 2026 (18.0) whose MSBuild SDK supports .NET 10. + # across every SQL Server image. .NET 10.0 coverage is provided by the + # primaryTargetFrameworks parameter below, which applies to the SQL Server + # 2025 and Azure SQL configurations. # - name: targetFrameworks displayName: Target Frameworks on Windows @@ -123,14 +124,38 @@ parameters: # These are _not_ the target frameworks to build the driver packages for. # # Note: We are excluding .NET 10.0 here to avoid consuming too many resources - # during PR pipeline runs, and until we update our 1ES images to include - # Visual Studio 2026 (18.0) whose MSBuild SDK supports .NET 10. + # across every SQL Server image. .NET 10.0 coverage is provided by the + # primaryTargetFrameworksUnix parameter below, which applies to the SQL + # Server 2025 and Azure SQL configurations. # - name: targetFrameworksUnix displayName: Target Frameworks on Unix type: object default: [net8.0, net9.0] + # The target frameworks used by the primary test configurations (local SQL + # Server 2025 and Azure SQL) on Windows. + # + # net10.0 is included here so that unit, functional, and manual tests get + # .NET 10 coverage without paying for it on every legacy SQL Server image. + # + # Note: The driver itself does not ship a net10.0 target framework, so the + # net10.0 test assemblies resolve the net9.0 driver build. These jobs + # therefore validate the driver running on the .NET 10 runtime, rather than + # a net10.0 build of the driver. + # + - name: primaryTargetFrameworks + displayName: Target Frameworks on Windows (SQL 2025 and Azure SQL) + type: object + default: [net462, net8.0, net9.0, net10.0] + + # The target frameworks used by the primary test configurations (local SQL + # Server 2025 and Azure SQL) on Unix. + - name: primaryTargetFrameworksUnix + displayName: Target Frameworks on Unix (SQL 2025 and Azure SQL) + type: object + default: [net8.0, net9.0, net10.0] + # The timeout, in minutes, for each test job. - name: testJobTimeout displayName: Test job timeout (in minutes) @@ -171,6 +196,8 @@ extends: dotnetVerbosity: ${{ parameters.dotnetVerbosity }} targetFrameworks: ${{ parameters.targetFrameworks }} targetFrameworksUnix: ${{ parameters.targetFrameworksUnix }} + primaryTargetFrameworks: ${{ parameters.primaryTargetFrameworks }} + primaryTargetFrameworksUnix: ${{ parameters.primaryTargetFrameworksUnix }} testJobTimeout: ${{ parameters.testJobTimeout }} testSets: ${{ parameters.testSets }} useManagedSNI: ${{ parameters.useManagedSNI }} diff --git a/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml b/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml index 1a58842305..9ccde60a72 100644 --- a/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml +++ b/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml @@ -131,6 +131,11 @@ extends: debug: ${{ parameters.debug }} targetFrameworks: ${{ parameters.targetFrameworks }} targetFrameworksUnix: ${{ parameters.targetFrameworksUnix }} + # Keep the primary (SQL 2025 / Azure SQL) configurations on the same set of + # target frameworks as everything else. Only the CI-SqlClient pipeline + # opts in to the broader .NET 10.0 coverage on those configurations. + primaryTargetFrameworks: ${{ parameters.targetFrameworks }} + primaryTargetFrameworksUnix: ${{ parameters.targetFrameworksUnix }} testJobTimeout: ${{ parameters.testJobTimeout }} testSets: ${{ parameters.testSets }} useManagedSNI: ${{ parameters.useManagedSNI }} diff --git a/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml b/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml index 6e54d0eb32..e0a6f0d205 100644 --- a/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml +++ b/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml @@ -131,6 +131,11 @@ extends: debug: ${{ parameters.debug }} targetFrameworks: ${{ parameters.targetFrameworks }} targetFrameworksUnix: ${{ parameters.targetFrameworksUnix }} + # Keep the primary (SQL 2025 / Azure SQL) configurations on the same set of + # target frameworks as everything else. Only the CI-SqlClient pipeline + # opts in to the broader .NET 10.0 coverage on those configurations. + primaryTargetFrameworks: ${{ parameters.targetFrameworks }} + primaryTargetFrameworksUnix: ${{ parameters.targetFrameworksUnix }} testJobTimeout: ${{ parameters.testJobTimeout }} testSets: ${{ parameters.testSets }} useManagedSNI: ${{ parameters.useManagedSNI }}