fix(ci): release.yml tag job broken since 2026-06-22 #8

Closed
opened 2026-07-21 21:19:07 +00:00 by mathias · 1 comment
Owner

Symptom

release.yml job tag (SemVer auto-tag on merge) has failed every run since 2026-06-22 (runs #7-11). Last green run was #6 (2026-06-18).

Surfaced via homelab-alerts RepoCIRedStuck (ntfy, 2026-07-21 01:03 UTC) — main has been CI-red 4+ weeks, unaddressed.

Investigation needed

No job logs available via Gitea REST API (/actions/jobs/{id}/logs → 404) or MCP workflow_run_status (no step detail exposed) — need to pull logs via the git.d-ma.be web UI directly to see the actual tag-step error.

Acceptance criteria

  • Root cause identified from actual job logs.
  • release.yml tag job green on a fresh push to main.
  • If unrelated to install.sh vs task install (#7), note that explicitly — don't conflate.
## Symptom `release.yml` job `tag` (SemVer auto-tag on merge) has failed every run since 2026-06-22 (runs #7-11). Last green run was #6 (2026-06-18). Surfaced via homelab-alerts `RepoCIRedStuck` (ntfy, 2026-07-21 01:03 UTC) — main has been CI-red 4+ weeks, unaddressed. ## Investigation needed No job logs available via Gitea REST API (`/actions/jobs/{id}/logs` → 404) or MCP `workflow_run_status` (no step detail exposed) — need to pull logs via the git.d-ma.be web UI directly to see the actual tag-step error. ## Acceptance criteria - Root cause identified from actual job logs. - `release.yml` `tag` job green on a fresh push to `main`. - If unrelated to `install.sh` vs `task install` (#7), note that explicitly — don't conflate.
Author
Owner

Root cause

set -euo pipefail + bump=$(printf '%s' "$last_commit" | grep -iE '^Bump-Type:' | head -1 | awk '{print tolower($2)}'). When the last commit has no Bump-Type: footer (the normal default-to-patch case), grep exits 1 on no-match. Under pipefail that becomes the whole pipeline's exit status even though head/awk both succeed — set -e then kills the script before it ever reaches the case statement that would've handled the empty bump correctly (default patch bump). Broke on every push since 2026-06-22, whenever a footer-less commit landed.

Reproduced locally by extracting and running the exact script against this repo's real commit/tag history — traced with bash -x to confirm the pipeline is exactly where it dies. Fixed with || true appended to the pipeline.

Verified in CI: run #12tag: success, and it actually pushed v0.3.2 (previous was stuck at v0.3.1).

Closing.

## Root cause `set -euo pipefail` + `bump=$(printf '%s' "$last_commit" | grep -iE '^Bump-Type:' | head -1 | awk '{print tolower($2)}')`. When the last commit has no `Bump-Type:` footer (the normal default-to-patch case), `grep` exits 1 on no-match. Under `pipefail` that becomes the whole pipeline's exit status even though `head`/`awk` both succeed — `set -e` then kills the script before it ever reaches the `case` statement that would've handled the empty `bump` correctly (default patch bump). Broke on every push since 2026-06-22, whenever a footer-less commit landed. Reproduced locally by extracting and running the exact script against this repo's real commit/tag history — traced with `bash -x` to confirm the pipeline is exactly where it dies. Fixed with `|| true` appended to the pipeline. **Verified in CI:** run #12 — `tag: success`, and it actually pushed `v0.3.2` (previous was stuck at `v0.3.1`). Closing.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mathias/skills#8