Skip to content

Add CI package pipeline for building and publishing NuGet packages#4292

Open
paulmedynski wants to merge 5 commits into
dev/paul/sql-server-project-refsfrom
dev/paul/sqlclient-package
Open

Add CI package pipeline for building and publishing NuGet packages#4292
paulmedynski wants to merge 5 commits into
dev/paul/sql-server-project-refsfrom
dev/paul/sqlclient-package

Conversation

@paulmedynski
Copy link
Copy Markdown
Contributor

@paulmedynski paulmedynski commented May 14, 2026

Adds a new top-level pipeline at eng/pipelines/ci/package/sqlclient-package.yml that:

  • Runs on pushes to GitHub main and ADO internal/main branches (batched)
  • Runs nightly at 00:00 UTC on those same branches
  • Cleans the packages/ directory before building
  • Uses build.proj Pack target with ReferenceType=Package
  • On internal builds, downloads the signing key and strong-name signs assemblies
  • Publishes all produced .nupkg/.snupkg files as a pipeline artifact

Tested ADO.Net project runs here:

We can't test Public project runs until this merges, because we can only create new pipelines based on GitHub for YAML files on main.

Copilot AI review requested due to automatic review settings May 14, 2026 19:13
@github-project-automation github-project-automation Bot moved this to To triage in SqlClient Board May 14, 2026
@paulmedynski paulmedynski changed the base branch from main to dev/paul/sql-server-project-refs May 14, 2026 19:13
@paulmedynski paulmedynski added the Area\Engineering Use this for issues that are targeted for changes in the 'eng' folder or build systems. label May 14, 2026
@paulmedynski paulmedynski added this to the 7.1.0-preview2 milestone May 14, 2026
@paulmedynski paulmedynski moved this from To triage to In progress in SqlClient Board May 14, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new CI pipeline that builds and publishes NuGet packages via build.proj in ReferenceType=Package mode, alongside a broader refactor to make package-mode builds self-sustaining: version flow is unified through import-guarded Versions.props files imported early by Directory.Packages.props, all Pack* targets now mirror their output into the local packages/ feed and gain DependsOn chains so dependent packages restore against freshly built nupkgs, and many test/csproj files now switch between ProjectReference and PackageReference for Microsoft.SqlServer.Server based on ReferenceType. A new signed test category gates UDT tests that require a strong-name-signed Microsoft.SqlServer.Server.

Changes:

  • New pipeline eng/pipelines/ci/package/sqlclient-package.yml (push to main/internal/main, nightly, optional strong-name signing on internal builds).
  • build.proj and Directory.Packages.props overhaul: package-mode DependsOn/Pack mirroring, central SqlServerPackageVersion token wiring, category!=signed filter for unsigned builds.
  • Threading of sqlServerArtifactsName/sqlServerPackageVersion through existing CI templates, and reference-mode switching for Microsoft.SqlServer.Server across csprojs (including nuspec token $SqlServerPackageVersion$).

Reviewed changes

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
eng/pipelines/ci/package/sqlclient-package.yml New CI pipeline that packs all packages and publishes Packages artifact.
build.proj Adds package-mode DependsOn chains, output mirroring to packages/, category!=signed filter, and PackageVersionSqlServer threading.
Directory.Packages.props Imports all Versions.props in Package mode to centrally manage sibling package versions.
doc/Directory.Packages.props, doc/samples/Microsoft.Data.SqlClient.Samples.csproj Pin and reorganize Microsoft.SqlServer.Server package usage.
src/Directory.Build.props Comment clarifying FileVersionBuildNumber ordering relative to Directory.Packages.props.
src/**/Versions.props (×6) Add per-product import-guard property to prevent double evaluation.
src/**/*.csproj (Logging, Abstractions, Azure, AKV, SqlServer, SqlClient src/ref/notsupported) Conditional Versions.props import using the new guard; SqlClient ref/notsupported gain SqlServer reference; nuspec token updated.
src/Microsoft.Data.SqlClient/src/Microsoft.Data.SqlClient.csproj Adds SqlServer version import, trim, validation error, and nuspec token replacement.
src/Microsoft.Data.SqlClient/src/Microsoft.Data.SqlClient.nuspec Replaces hard-coded 1.0.0 with $SqlServerPackageVersion$ token.
src/Microsoft.Data.SqlClient/tests/UnitTests/...csproj Adds ValidateReferenceType target and project reference to Microsoft.SqlServer.Server.
src/Microsoft.Data.SqlClient/tests/ManualTests/...csproj Reference-mode switching for Microsoft.SqlServer.Server (top-level and UDT projects).
src/Microsoft.Data.SqlClient/tests/Common/Microsoft.Data.SqlClient.TestCommon.csproj Enables ImplicitUsings.
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/UdtTest/SqlServerTypesTest.cs, FunctionalTests/SqlDataRecordTest.cs Adds [Trait("Category", "signed")] on NETFRAMEWORK for UDT tests requiring signed SqlServer assembly.
eng/pipelines/**/*.yml (ci-core, build-sqlclient/azure stages, ci-run-tests stage/job, ci-build-nugets, ci-project-build, run-all-tests, test-azure-package job) Thread new sqlServerArtifactsName/sqlServerPackageVersion parameter and download the SqlServer artifact for package-mode test/build flows.

Comment thread eng/pipelines/ci/package/sqlclient-package.yml Outdated
Comment thread eng/pipelines/ci/package/sqlclient-package.yml Outdated
Comment thread eng/pipelines/ci/package/sqlclient-package.yml
Copilot AI review requested due to automatic review settings May 14, 2026 19:26
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@paulmedynski paulmedynski marked this pull request as ready for review May 14, 2026 19:32
@paulmedynski paulmedynski requested a review from a team as a code owner May 14, 2026 19:32
@paulmedynski paulmedynski moved this from In progress to In review in SqlClient Board May 14, 2026
@paulmedynski paulmedynski force-pushed the dev/paul/sqlclient-package branch from 2b54e4e to da6d01c Compare May 15, 2026 12:34
@paulmedynski paulmedynski added the DO NOT MERGE PRs that are created for test reasons, should not be merged. label May 15, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 15, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (dev/paul/sql-server-project-refs@3a1792e). Learn more about missing BASE report.

Additional details and impacted files
@@                         Coverage Diff                         @@
##             dev/paul/sql-server-project-refs    #4292   +/-   ##
===================================================================
  Coverage                                    ?   65.83%           
===================================================================
  Files                                       ?      277           
  Lines                                       ?    66014           
  Branches                                    ?        0           
===================================================================
  Hits                                        ?    43458           
  Misses                                      ?    22556           
  Partials                                    ?        0           
Flag Coverage Δ
PR-SqlClient-Project 65.83% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area\Engineering Use this for issues that are targeted for changes in the 'eng' folder or build systems. DO NOT MERGE PRs that are created for test reasons, should not be merged.

Projects

Status: In review

Development

Successfully merging this pull request may close these issues.

4 participants