ci: delete the stale coverage comment when a run produces no profile

A PR that reverts its Go changes but keeps a doc change produces no coverage
artifact, so every step after the probe skips, octocov never runs, and its
comment for the earlier head stays on the PR reporting a delta that is zero by
construction. Gating those steps is what made this reachable.

The comment is matched on `<!-- octocov -->`, the signature octocov appends and
keys `updatePrevious` off itself, which is also what distinguishes it from the
download-link comment posted by the same bot.

The PR number comes from the base repo's workflow_run head sha rather than from
the artifact, so the fork-controlled-input cross-check that guards the profile
path does not apply: nothing is downloaded or executed on this path.
This commit is contained in:
Deluan 2026-09-05 14:33:36 -04:00
commit 4f3e12738a

View file

@ -25,6 +25,23 @@ jobs:
--jq '.total_count')
echo "count=$count" >> "$GITHUB_OUTPUT"
# A PR that reverts its Go changes produces no artifact, but octocov's
# comment for the earlier head stays. Match the marker it keys off itself.
- name: Delete the stale coverage comment
if: steps.artifact.outputs.count == '0'
env:
GH_TOKEN: ${{ github.token }}
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
run: |
number=$(gh api --paginate "repos/$GITHUB_REPOSITORY/pulls?state=open&per_page=100" \
--jq ".[] | select(.head.sha == \"$HEAD_SHA\") | .number" | head -n1)
[ -n "$number" ] || exit 0
id=$(gh api --paginate "repos/$GITHUB_REPOSITORY/issues/$number/comments" \
--jq '.[] | select(.user.login == "github-actions[bot]" and (.body | contains("<!-- octocov -->"))) | .id' | head -n1)
if [ -n "$id" ]; then
gh api -X DELETE "repos/$GITHUB_REPOSITORY/issues/comments/$id"
fi
# Only the config, from the base branch: this job holds a write token, so
# it must never check out the fork.
- name: Check out the octocov config