ci: add coverage uploads for Windows and 32-bit Debian - #2496
Conversation
Adds coverage build variants for the Windows msys2 ucrt64 Botan leg and the Debian 11 i386 Botan and OpenSSL legs, per issue #2276. Coverage legs build with ENABLE_COVERAGE, run the tests, convert the gcno files with gcov and upload to Codecov, matching the existing 64-bit Linux coverage legs.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2496 +/- ##
=======================================
Coverage 85.45% 85.45%
=======================================
Files 125 125
Lines 23042 23042
=======================================
Hits 19691 19691
Misses 3351 3351 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The ENABLE_COVERAGE option is only supported with the GNU compiler, so the clang combinations of the coverage matrix entries fail during configuration. Excluding them leaves the gcc legs, which produce the coverage reports.
The coverage legs install gcovr from the system repositories, and the package is not visible to the minimal package lists of the CI containers until they are refreshed, which failed the Coverage step with "Unable to locate package gcovr".
The coverage step only invokes gcov, which ships with the GNU toolchain already present in the containers, and the minimal package lists of the i386 images cannot resolve the gcovr package. The installation was never used and only blocked the step.
The codecov bash uploader has been discontinued, and the current uploader binary is x86_64-only, which cannot execute under the 32-bit userspace of the i386 containers. The process substitution syntax of the previous invocation also failed under the POSIX shell of the Debian jobs. Generate the gcov reports as before and upload them as workflow artifacts, which keeps the coverage data retrievable on every platform without external dependencies.
|
@ni4 Thank you for the approval. While validating the coverage legs I found that the previous upload invocation could never have delivered data: the codecov bash uploader has been discontinued by the service, the process-substitution syntax fails under the POSIX shell of the Debian jobs, and the current uploader binary is x86_64-only, which cannot execute under the 32-bit userspace of the i386 containers. The coverage steps now upload the generated gcov reports as workflow artifacts instead, which keeps the data retrievable on every platform without external dependencies. The commits since your review are 75502cb, 48b9eca and d035fc7, all confined to the coverage steps; please speak up if you would like any of them handled differently. |
Summary
ENABLE_COVERAGE, run the test suite, convert the.gcnofiles withgcovand upload the results to Codecov, matching the existing 64-bit Linux coverage legs.gcovand Codecov flow as the CentOS and Fedora coverage legs.Test plan