Skip to content

WIP | Create Extensions package #3471

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from

Conversation

paulmedynski
Copy link
Contributor

Description

Work in Progress - This PR is a draft while I get the CI machinery working.

As part of the Azure split work, a new Extensions package is being created that contains types shared between MDS and its future extensions (Azure will be the first). This PR creates that package (with no meaningful content) to setup the MDS dependency, and get testing and CI setup accordingly.

I'm also experimenting with simplified .slnx files and some project directory structure changes.

Issues

The first step towards #1108.

Testing

  • Unit tests for the sample class to prove that CI can run them successfully.
  • There are no MDS tests to prove out the new dependency yet. Those will naturally happen when the first real bit of Azure functionality is moved out into the new Azure extension package.

Copy link
Contributor Author

@paulmedynski paulmedynski left a comment

Choose a reason for hiding this comment

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

Added commentary for reviewers and found some things to fix.

@@ -327,9 +349,8 @@ stages:
# ways to detect if they were present) won't run consistently across forks and non-forks.
${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
AADPasswordConnectionString: $(AAD_PASSWORD_CONN_STR)
AADServicePrincipalId: $(AADServicePrincipalId)
${{ if eq(variables['system.pullRequest.isFork'], 'False') }}:
Copy link
Contributor Author

Choose a reason for hiding this comment

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

My YAML linter was complaining about duplicate keys because these ${{if ...} lines are the same. Similar changes below for the enclave test configurations.

displayName: CI Job for Extensions Package
pool:
name: ADO-CI-1ES-Pool
vmImage: ubuntu-latest
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm only building on Linux for now. We can expand this to also build on Windows if we think that is necessary.

projects: $(project)
arguments: $(commonArguments) --no-restore

- task: DotNetCoreCLI@2
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Tests are only run on Linux for now. I will expand this to run a job on Windows that pulls the artifacts and runs tests there as well.

used by the build tooling and may be unintentionally included in other
(non-MDS) projects.
-->
<NugetPackageVersion Condition="'$(NugetPackageVersion)' == ''">$(MdsVersionDefault).$(BuildNumber)-dev</NugetPackageVersion>
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Minor tweak here - I added $(BuildNumber) - not sure if that's helpful, but it matches how the Extensions package does things.

- Added empty Extensions package with some sample class and docs to demonstrate packaging.
- Created first cut of CI stage to build, test, pack, and publish the Extensions NuGet package.
@paulmedynski paulmedynski force-pushed the dev/paul/azure-split/extensions branch from ba927b7 to 6a52ede Compare July 11, 2025 19:09
- Added Exteneions package artifact download to jobs that depend on it.
- Tweaked build.proj to remove BuildExtensionsProject as a dependency from MDS targets because MSBuild just doesn't support building an entire target before restoring others.
- Removed Extensions pipeline artifact name variable because it wouldn't expand and was literally "$(pipelineArtifactsName)".
- Fixed stray BuildExtensionsPackage target in build.proj.
- Clean target doesn't delete packages/ dir any more, since it contains Extensions packages that downstream projects require.
- Fixed missing or incorrect Extensions package version in a bunch of places.
- Improving diagnostics for failing TestSqlCommandCancel tests.
- Added build jobs for Windows and macOS.
- Fixed tests that assume Windows newlines in system exception messages.
- Fixed typo in pipeline artifacts download.
- Publishing/downloading dotnet artifacts didn't work, so we now re-build in the package job.
Copy link

codecov bot commented Jul 14, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 67.56%. Comparing base (8eb9f32) to head (f5bdab4).
Report is 7 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3471      +/-   ##
==========================================
- Coverage   68.86%   67.56%   -1.31%     
==========================================
  Files         280      276       -4     
  Lines       62417    62178     -239     
==========================================
- Hits        42982    42009     -973     
- Misses      19435    20169     +734     
Flag Coverage Δ
addons 92.58% <ø> (ø)
netcore 72.72% <ø> (-0.03%) ⬇️
netfx 66.30% <ø> (-1.74%) ⬇️

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
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant