Repository navigation
ci+readme: build and coverage badges - #2
Merged
Merged
Conversation
A second 'badge' job in the workflow runs only on a green push to main. It reads the coverage.out artifact produced by the test job, composes a shields.io endpoint JSON (coverage %, color threshold red→yellow→ brightgreen→green), and publishes it to a dedicated 'badges' branch. The branch is an orphan — never merges back into main — so the main branch protection remains intact (the bot never writes to main). README gets two badges at the top: - build status, read directly from the GitHub Actions workflow - coverage, via shields.io reading raw content from the badges branch The coverage badge will show 'invalid' until the first post-merge run publishes coverage.json; after that it auto-updates on each push.
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.
Summary
Architecture note
Branch protection on `main` is enforced (no direct pushes). The badge job publishes to a separate `badges` branch — never touches `main` — so the protection is preserved end-to-end.
Coverage badge will show `invalid` until the first post-merge run completes, at which point shields.io picks up the freshly-published `coverage.json`.
Test plan