diff --git a/eng/pipelines/dotnet-sqlclient-ci-core.yml b/eng/pipelines/dotnet-sqlclient-ci-core.yml index ec5703a487..522f25395e 100644 --- a/eng/pipelines/dotnet-sqlclient-ci-core.yml +++ b/eng/pipelines/dotnet-sqlclient-ci-core.yml @@ -114,6 +114,15 @@ parameters: type: boolean default: true + # If true, run manual tests against SQL Server 2022. + # + # The primary test configurations run against SQL Server 2025, so SQL Server + # 2022 is CI-only coverage. PR pipelines disable it to keep validation fast. + # + - name: runSql22Tests + type: boolean + default: true + # Build suffix appended to the prerelease tag. PR pipelines pass 'pr', # CI pipelines pass 'ci'. Official builds leave this empty. - name: buildSuffix @@ -579,6 +588,62 @@ stages: LocalDbSharedInstanceName: $(LocalDbSharedInstanceName) AliasName: $(SQLAliasName) + # SQL Server 2022 coverage, on Windows and Linux. + # + # The primary configurations run against SQL Server 2025, so these keep + # SQL Server 2022 in the matrix. They are grouped under a single + # conditional so that PR pipelines can opt out of them as a unit. + ${{ if eq(parameters.runSql22Tests, true) }}: + # Windows Server 22 with local SQL Server 2022, x64 build platform. + windows_sql_22_x64: + pool: ${{parameters.defaultPoolName }} + images: + Win22_Sql22: ADO-MMS22-SQL22 + TargetFrameworks: ${{parameters.targetFrameworks }} + netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }} + buildPlatforms: ${{parameters.buildPlatforms }} + testSets: ${{parameters.testSets }} + useManagedSNI: ${{parameters.useManagedSNI }} + configSqlFor: local + operatingSystem: Windows + # config.jsonc properties + configProperties: + TCPConnectionString: $(SQL_TCP_CONN_STRING) + NPConnectionString: $(SQL_NP_CONN_STRING) + AzureKeyVaultUrl: $(AzureKeyVaultUrl) + AzureKeyVaultTenantId: $(AzureKeyVaultTenantId) + SupportsIntegratedSecurity: true + UserManagedIdentityClientId: $(UserManagedIdentityClientId) + FileStreamDirectory: $(FileStreamDirectory) + LocalDbAppName: $(LocalDbAppName) + LocalDbSharedInstanceName: $(LocalDbSharedInstanceName) + AliasName: $(SQLAliasName) + SQLRootPath: $(SQL22RootPath) + enableLocalDB: true + + # Linux Ubuntu 22 with local SQL Server 2022, x64 build platform. + linux_ub22_sql_22: + pool: ${{parameters.defaultPoolName }} + images: + Ubuntu22_Sql22: ADO-UB22-SQL22 + TargetFrameworks: ${{parameters.targetFrameworksUnix }} + netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }} + buildPlatforms: [AnyCPU] + testSets: ${{parameters.testSets }} + useManagedSNI: [true] + configSqlFor: local + operatingSystem: Linux + configProperties: + TCPConnectionString: $(SQL_TCP_CONN_STRING) + NPConnectionString: $(SQL_NP_CONN_STRING) + AzureKeyVaultUrl: $(AzureKeyVaultUrl) + AzureKeyVaultTenantId: $(AzureKeyVaultTenantId) + SupportsIntegratedSecurity: false + UserManagedIdentityClientId: $(UserManagedIdentityClientId) + LocalDbAppName: $(LocalDbAppName) + LocalDbSharedInstanceName: $(LocalDbSharedInstanceName) + AliasName: $(SQLAliasName) + # Linux Ubuntu 24 with Azure SQL Server, x64 build platform. linux_azure_sql: pool: ${{parameters.defaultPoolName }} diff --git a/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml b/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml index abb0ef5f39..7623f83ce4 100644 --- a/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml +++ b/eng/pipelines/sqlclient-pr-package-ref-pipeline.yml @@ -145,6 +145,9 @@ extends: useManagedSNI: ${{ parameters.useManagedSNI }} # Legacy SQL Server tests (2016/2017) run in CI only, not on PRs. runLegacySqlTests: false + # SQL Server 2022 coverage runs in CI only. PR validation covers SQL + # Server 2019, 2025 and Azure SQL. + runSql22Tests: false # Don't run the AE tests in Debug mode; they rarely succeed. ${{ if eq(parameters.buildConfiguration, 'Debug') }}: runAlwaysEncryptedTests: false diff --git a/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml b/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml index f9578e6548..74309ae643 100644 --- a/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml +++ b/eng/pipelines/sqlclient-pr-project-ref-pipeline.yml @@ -145,6 +145,9 @@ extends: useManagedSNI: ${{ parameters.useManagedSNI }} # Legacy SQL Server tests (2016/2017) run in CI only, not on PRs. runLegacySqlTests: false + # SQL Server 2022 coverage runs in CI only. PR validation covers SQL + # Server 2019, 2025 and Azure SQL. + runSql22Tests: false # Don't run the AE tests in Debug mode; they rarely succeed. ${{ if eq(parameters.buildConfiguration, 'Debug') }}: runAlwaysEncryptedTests: false