feat(badges): live README status badges (coverage, CI matrix, releases)#23
Merged
Conversation
85a0e96 to
1744f4f
Compare
1744f4f to
5c88570
Compare
Add an `update-badges.yaml` reusable workflow that writes shields.io endpoint JSON to an orphan `badges` branch of the caller repo (built-in GITHUB_TOKEN, no gist or PAT), fed by new `coverage` and `matrix-status` outputs on csharp-ci and scala-ci, so consumer READMEs can show live coverage and per-platform CI badges alongside the standard release/version badges.
5c88570 to
cbe0a8f
Compare
This was referenced Jun 14, 2026
Open
monsieurleberre
added a commit
that referenced
this pull request
Jun 14, 2026
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.
Closes #22.
What
Adds a README status-badges capability for consumer repos, driven entirely from CI — no gist, no PAT.
update-badges.yaml(new reusable workflow) — writes shields.io endpoint JSON to an orphanbadgesbranch of the caller repo using the built-inGITHUB_TOKEN. A single post-CI writer renders every badge file in one commit (one badge branch per repo, no concurrent-write races). Inputs:coverage-data({slug,label,percent}[]→coverage-<slug>.json),matrix-data({lang,os,arch,passed}[]→ci-<lang>-<os>-<arch>.json),badge-branch(defaultbadges).csharp-ci.yaml/scala-ci.yaml— newcoverageoutput (integer line-coverage % from the coverage shard) andmatrix-statusoutput (per-shard{name,os,arch,passed}), each surfaced via a dedicated post-matrix job that reads uploaded artifacts (matrix-job outputs are last-writer-wins).artifact-prefixinput on both CI workflows (defaultcsharp/scala) — namespaces per-run artifacts so two languages invoked in one caller run don't collide oncoverage-percent/ci-result-<shard>.logoSvg(Simple Icons ships nowindows/microsoftslug); Ubuntu/macOS keepnamedLogo. The matrix badge label is arch-only (the OS is conveyed by the logo and the README table column).extract_coverage.py,coverage_badge_json.py,matrix_badge_json.py,aggregate_matrix_status.py;write-badges.shdoes the git plumbing.Verification
python3 -m unittest discover -s test -p '*_test.py'→ 48 passedactionlintclean on all three workflowsdaml-codegen-csharppilot (PR feat(ci): default CI runner from repository visibility + cut v1.3.0 #9): badges render on thebadgesbranch — C# coverage 97%, Scala 92%, per-platform CI badges with logos, and a grey "not supported" cell for the Scala Windows/arm64 shard.Notes
write-badges.shfetch-error handling and malformed-marker validation) are noted on the PR thread for a separate change.github/v/releaseversion badges (the "releases" leg of Investigate Schneegans/dynamic-badges-action for default README badges (CI, NuGet versions, OS/arch matrix, coverage) #22); those are static shields badges added in the consumer README, not produced by this workflow.