ci: CI-pushed tags don't trigger release.yml — Release object never created #186

Closed
opened 2026-05-13 21:45:02 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-13 21:45:02 +00:00 (Migrated from github.com)

What

The publish-tag job creates a git tag and pushes it with the default GITHUB_TOKEN. The separate release.yml workflow listens for push: tags: events but never sees CI-pushed tags because GitHub Actions intentionally prevents GITHUB_TOKEN-pushed events from triggering downstream workflows (avoids infinite loops). Result: tag exists, Release object does not.

Evidence

Fix

Add a "Create GitHub Release" step to the publish-tag job that runs in the same job (no cross-workflow trigger needed). Use gh release create with GH_TOKEN: secrets.GITHUB_TOKEN — direct API calls work fine with the default token; only the push→workflow chain is blocked.

release.yml stays as a fallback for manually-pushed tags (humans pushing tags directly CAN trigger workflows).

Acceptance

  • Next CI-pushed tag produces both the tag AND a Release on the Releases page.
  • release.yml left intact for manual-tag fallback.
  • Release-create step is idempotent (skips if release exists; tolerates rerun).
## What The publish-tag job creates a git tag and pushes it with the default `GITHUB_TOKEN`. The separate `release.yml` workflow listens for `push: tags:` events but never sees CI-pushed tags because **GitHub Actions intentionally prevents `GITHUB_TOKEN`-pushed events from triggering downstream workflows** (avoids infinite loops). Result: tag exists, Release object does not. ## Evidence - `v0.1.0-dev.50` (2026-05-13) — tag created, Releases page empty. Had to be created manually via `gh release create`. - See https://github.com/KofTwentyTwo/Jarvis/releases vs https://github.com/KofTwentyTwo/Jarvis/tags ## Fix Add a "Create GitHub Release" step to the publish-tag job that runs in the same job (no cross-workflow trigger needed). Use `gh release create` with `GH_TOKEN: secrets.GITHUB_TOKEN` — direct API calls work fine with the default token; only the push→workflow chain is blocked. `release.yml` stays as a fallback for manually-pushed tags (humans pushing tags directly CAN trigger workflows). ## Acceptance - [ ] Next CI-pushed tag produces both the tag AND a Release on the Releases page. - [ ] release.yml left intact for manual-tag fallback. - [ ] Release-create step is idempotent (skips if release exists; tolerates rerun).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#186