Skip to content

release: GitHub Release step runs before the tag is pushed, so it always fails #113

Description

@levifig

Summary

loaf release creates the release commit and tag locally, then immediately invokes gh release create — without pushing either. gh refuses to create a release for a tag that only exists locally, so on any repo where loaf itself is responsible for pushing, the GitHub Release step fails every time and the operator has to repair by hand.

Observed

Repo: levifig/mvault, loaf 2.0.0-alpha.6 (repo initialized under 2.0.0-dev.42), hit identically on v0.11.0 and v0.11.1:

✓ Ran npm run build
✓ Committed release artifacts
✓ Created tag v0.11.1
loaf: Failed to create GitHub release: exit status 1: tag v0.11.1 exists locally but has not been pushed to levifig/mvault, please push it before continuing or specify the `--target` flag to create a new tag

The branch was fully in sync with origin before loaf release ran — the only unpushed refs were the release commit and tag loaf itself had just created.

Manual repair used both times

git push origin main --follow-tags
gh release create vX.Y.Z --title vX.Y.Z --notes-file <curated section>

Suggested fix

Insert a push step between tag creation and the GitHub Release step:

... → create release commit → create tag → git push --follow-tags → gh release create ...

Prefer push-first over gh release create --target <sha>: --target makes gh mint a fresh lightweight tag remotely, silently bypassing the signed annotated tag loaf just created locally.

A failure in the push step should abort before the GH-release step so partial-publish states stay easy to reason about.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions