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.ymltag 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.
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.
## 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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Symptom
release.ymljobtag(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 MCPworkflow_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
release.ymltagjob green on a fresh push tomain.install.shvstask install(#7), note that explicitly — don't conflate.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 noBump-Type:footer (the normal default-to-patch case),grepexits 1 on no-match. Underpipefailthat becomes the whole pipeline's exit status even thoughhead/awkboth succeed —set -ethen kills the script before it ever reaches thecasestatement that would've handled the emptybumpcorrectly (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 -xto confirm the pipeline is exactly where it dies. Fixed with|| trueappended to the pipeline.Verified in CI: run #12 —
tag: success, and it actually pushedv0.3.2(previous was stuck atv0.3.1).Closing.