Most people run GoReleaser by creating a tag locally, pushing it, and letting their CI takes care of the matter. Another lesser known option is to leverage workflow_dispatch on a GitHub Action to create the tag locally, and then “auto-creating” the tag once the release finishes. This has a couple of trade-offs, though: You’ll also have to set up signing in your workflow if you want to sign the tag; Go mod proxying will not work, as the tag is only created when the release finishes.