fix(ci): publish coverage badge from badges branch (#1091)

* fix(ci): publish coverage badge from badges branch

* fix(ci): address badge review findings
This commit is contained in:
Tommaso Casaburi
2026-03-17 16:10:55 +08:00
committed by GitHub
parent 83aa221ec0
commit b2946e8b2e
2 changed files with 50 additions and 10 deletions
+49 -9
View File
@@ -103,24 +103,64 @@ jobs:
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
permissions:
contents: write
env:
COVERAGE_BADGE_BRANCH: badges
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
fetch-depth: 0
- name: Download coverage badge
uses: actions/download-artifact@v4
with:
name: coverage-badge
path: badges/
path: ${{ runner.temp }}/coverage-badge
- run: git add badges/coverage.json
- run: git status
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'chore(ci): update coverage badge'
file_pattern: 'badges/coverage.json'
branch: ${{ github.ref_name }}
- name: Publish coverage badge branch
env:
BADGE_SOURCE_PATH: ${{ runner.temp }}/coverage-badge/coverage.json
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
if git ls-remote --exit-code --heads origin "${COVERAGE_BADGE_BRANCH}"; then
git fetch origin "${COVERAGE_BADGE_BRANCH}:${COVERAGE_BADGE_BRANCH}"
git switch "${COVERAGE_BADGE_BRANCH}"
else
git switch --orphan "${COVERAGE_BADGE_BRANCH}"
git rm -rf --ignore-unmatch .
find . -mindepth 1 -maxdepth 1 ! -name .git -exec rm -rf {} +
fi
mkdir -p badges
cp "${BADGE_SOURCE_PATH}" badges/coverage.json
git add badges/coverage.json
if git diff --cached --quiet; then
echo "Coverage badge is already up to date."
exit 0
fi
git commit -m "chore(ci): update coverage badge"
for attempt in 1 2 3; do
if git push --force-with-lease origin "HEAD:${COVERAGE_BADGE_BRANCH}"; then
exit 0
fi
if [ "${attempt}" -eq 3 ]; then
echo "Failed to publish coverage badge after ${attempt} attempts."
exit 1
fi
echo "Push failed on attempt ${attempt}; syncing with origin/${COVERAGE_BADGE_BRANCH} before retrying..."
git fetch origin "${COVERAGE_BADGE_BRANCH}" || true
if git show-ref --verify --quiet "refs/remotes/origin/${COVERAGE_BADGE_BRANCH}"; then
git rebase "origin/${COVERAGE_BADGE_BRANCH}"
fi
sleep $((attempt * 2))
done
android-build:
name: Android Build
+1 -1
View File
@@ -1,5 +1,5 @@
[![Build Status](https://img.shields.io/github/actions/workflow/status/bitsocialnet/5chan/ci.yml?branch=master)](https://github.com/bitsocialnet/5chan/actions/workflows/ci.yml)
[![Coverage](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/bitsocialnet/5chan/master/badges/coverage.json)](https://github.com/bitsocialnet/5chan/actions/workflows/ci.yml)
[![Coverage](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/bitsocialnet/5chan/badges/badges/coverage.json)](https://github.com/bitsocialnet/5chan/blob/master/scripts/write-coverage-badge.mjs)
[![Release](https://img.shields.io/github/v/release/bitsocialnet/5chan)](https://github.com/bitsocialnet/5chan/releases/latest)
[![License](https://img.shields.io/badge/license-GPL--2.0--only-red.svg)](https://github.com/bitsocialnet/5chan/blob/master/LICENSE)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)