What are badges?
Now lets create a custom badge for your git project
The Plugins to update the JUnit test number seem not working very well specially if you do not have JaCOCO , here is a simple work around
1) Create a GIST file
2)Get your GIST ID
https://docs.github.com/en/rest/gists/gists?apiVersion=2022-11-28
3)Create GIT TOken with GIST permission
https://docs.github.com/en/enterprise-server@3.9/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
4)Add The token to your repo secret for action
5)Create shell script
#!/bin/bash
# Assuming Maven generates XML test reports in the "target/surefire-reports" directory
TEST_REPORT_DIR="target/surefire-reports"
# Print current directory
echo "Current directory: $(pwd)"
xml_files=$(find "$(pwd)" -name "TEST-*.xml")
# Concatenate all XML files and count the occurrences of "<testcase" using grep
test_count=$(cat $xml_files | grep -c "<testcase")
echo "Total number of tests: $test_count"
echo "GIST_ID: $GIST_ID"
json_data='{"schemaVersion": "1", "label": "testcount", "message": "'$test_count'", "color": "orange"}'
echo "JSON data: $json_data"
# Prevent any output from the script
exec > /dev/null
exec 2>&1
# Create or update the Gist with the test count
curl -s -X PATCH \
-H "Authorization: token $GIST_TOKEN" \
-H "Content-Type: application/vnd.github+json" \
-d '{"files":{"test.json":{"content": "{\"schemaVersion\": 1,\"label\": \"testcount\", \"message\": \"'$test_count'\", \"color\":\"orange\"}" }}}' \
"https://api.github.com/gists/$GIST_ID"
7)Add script to your workflow
- name: Upload test custom
env:
GIST_TOKEN: ${{ secrets.GIST_TOKEN }}
GIST_ID: ${{ secrets.GIST_ID }}
run: bash uploadnumber.sh
8)Create the Shield badge from the raw gist file
https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/{gitusername}/{gist_id}/raw/{file_name}