#Neurodivergent Father, Husband, Philosopher, Craftsman, and evolving Human. #FullStackDeveloper & #DevOps engineer by day and hacker by night; I'm on the lookout for my next challenge.
Location
Manassas, VA
Education
High-school in Arizona, 3043 MOS School, BS in Information Systems Security from ITT Tech
I may be missing something here, but since this comes down to creating and stashing a .json file that can be accessed in the context of a viewer on the readme.md, couldn't a repo be used just as well (with a token generated having appropriate perms to commit changes to the repo/branch that will be used in the badge to retrieve that .json file?
name: Test PR number
on:
pull_request:
jobs:
test-pr-num:
runs-on: ubuntu-latest
steps:
- name: Get PR number
run: |
echo "Current PR Number is: ${{ github.event.pull_request.number }}"
Needed to make a few changes for Yarn (no need to add --, have to trim 3 lines on the tail)
Made a tiny version to renew the gist file only on push to main branch (when you need to display only in Readme)
name:coverage badgeon:push:branches:[master]jobs:checks:runs-on:ubuntu-20.04steps:-uses:actions/checkout@v2-name:Install modulesrun:yarn --prefer-offline-name:Run unit tests with coveragerun:|SUMMARY="$(yarn test --coverage --coverageReporters=text-summary | tail -3 | head -1)"TOKENS=($SUMMARY)echo "COVERAGE=$(echo ${TOKENS[2]})" >> $GITHUB_ENV-name:Create Coverage Badgeuses:schneegans/dynamic-badges-action@v1.1.0with:auth:${{ secrets.GIST_SECRET }}gistID:<your_gist_id>filename:<your_repo>_coverage.jsonlabel:coveragemessage:${{ env.COVERAGE }}namedLogo:jestcolor:bluelogoColor:lightblue
Great article, I was able to implement this with a bit of tinkering. It might be good to note that the your-repo/.github/workflows/node.js.yml file needs to be configured with the gistID and filename (repo name):
- if: ${{ matrix.node-version == '14.x' }}
name: Create the Badge
uses: schneegans/dynamic-badges-action@v1.0.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: 7d4c25ef2e97e8de523ef7c1fee26e8e # <-- Update this
filename: your-repo-name__${{ env.BRANCH }}.json # <-- And this
Just tested with https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/TheJaredWilcurt/9c5d16fe3fa8f8ef414fe8b0eff17f7f/raw/red-perfume__pull_31.json and it is working fine for me.
We're a place where coders share, stay up-to-date and grow their careers.
I may be missing something here, but since this comes down to creating and stashing a .json file that can be accessed in the context of a viewer on the readme.md, couldn't a repo be used just as well (with a token generated having appropriate perms to commit changes to the repo/branch that will be used in the badge to retrieve that .json file?
That's another way, abusing Gist just has fewer steps. And lower risk (can't accidentally give permissions to the wrong repo, just to your gists).
You can get PR number easily:
You can update the pull request template after the coverage badge has been created with an additional step in your workflow:
Needed to make a few changes for Yarn (no need to add
--, have to trim 3 lines on the tail)Made a tiny version to renew the gist file only on push to main branch (when you need to display only in Readme)
Instead of parsing
text-summaryoutput, you can use ajson-summaryreporter and then get values that you need withjqtool, like so:You can see it in action at my repository.
There are more easiest way like this action Jest Coverage Comment
It works in PR/Push, can extract the coverage, and there are also example of how to update the Readme with
coverage.@mishakav @thejaredwilcurt consider this action, no secrets config at all.
It's simple and fits simple projects,
with a continuously updated badge output to gh-pages.
github.com/we-cli/coverage-badge-a...
Great post. finally, something without any paid third-party usages.
Great article, I was able to implement this with a bit of tinkering. It might be good to note that the
your-repo/.github/workflows/node.js.ymlfile needs to be configured with the gistID and filename (repo name):Since one or two weeks Shield.io display "domain is blocked" when using this technique. Am I the only one getting this error?
Just tested with
https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/TheJaredWilcurt/9c5d16fe3fa8f8ef414fe8b0eff17f7f/raw/red-perfume__pull_31.jsonand it is working fine for me.