Add code coverage reporting to public pipeline#1586
Merged
David-Engel merged 23 commits intodevfrom Mar 20, 2026
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #1586 +/- ##
==========================================
+ Coverage 83.45% 85.36% +1.91%
==========================================
Files 22 23 +1
Lines 7851 7128 -723
==========================================
- Hits 6552 6085 -467
+ Misses 1299 1043 -256 🚀 New features to boost your workflow:
|
David-Engel
commented
Mar 18, 2026
Comment on lines
+565
to
+572
| # 1ES images' Microsoft repos have priority 1001, causing apt to prefer | ||
| # unixodbc 2.3.7 from Microsoft over 2.3.9 from Ubuntu. Pin unixODBC | ||
| # packages to prefer Ubuntu's versions. | ||
| printf '%s\n' \ | ||
| 'Package: unixodbc unixodbc-dev unixodbc-common libodbc1 libodbc2 libodbcinst2 odbcinst odbcinst1debian2' \ | ||
| 'Pin: origin packages.microsoft.com' \ | ||
| 'Pin-Priority: 100' \ | ||
| | sudo tee /etc/apt/preferences.d/unixodbc-pin |
Collaborator
Author
There was a problem hiding this comment.
This block isn't strictly necessary against the Azure Pipelines pool. I switched to a 1ES pool for Linux/Windows for quicker turnaround times when other teams were using all our Azure Pipelines agent slots (limit of 20). The 1ES images prioritize the MS package repo over Ubuntu, causing our lower unixodbc version to be preferred. Figured I would leave this in if we ever want to switch back to our own pool (say our public CI usage increased).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces major improvements to code coverage collection, merging, and reporting in the CI pipeline for both Linux and Windows builds. The changes replace the previous Coveralls-based approach with Cobertura XML reports, implement artifact staging and publishing for coverage results, and add a new cross-platform coverage merging script. Several legacy diagnostic steps are removed for clarity and efficiency.
Code coverage collection and reporting improvements:
gcovr, and on Windows, coverage is collected usingOpenCppCoverage. [1] [2]MergeCoveragejob that downloads coverage artifacts from both platforms, merges them using the newbuildscripts/merge_coverage.pyscript, publishes the merged coverage report, and uploads it to Codecov. [1] [2]Build and installation enhancements:
unixODBCpackages to prefer Ubuntu versions, avoiding conflicts with Microsoft repositories.sqlsrvandpdo_sqlsrvdrivers, improving debugging and artifact completeness.Cleanup and simplification:
New script for coverage merging:
buildscripts/merge_coverage.py, which normalizes file paths, deduplicates shared files, and merges Cobertura XML coverage reports from both Linux and Windows into a single unified report.These changes modernize the CI pipeline's coverage reporting, improve artifact management, and simplify build steps, resulting in clearer, more actionable coverage metrics across platforms.