Skip to content

monorelReleases for Go monorepos

Explicit per-PR changesets. The tag conventions Go modules need.

A release timeline as a railroad track

Quick Example

toml
# monorel.toml
[forge]
provider = "github"
owner    = "acme"
repo     = "widget"

[packages."github.com/acme/widget"]
tag_prefix = ""
path       = "."
changelog  = "CHANGELOG.md"

[packages."transports/zerolog"]
tag_prefix = "transports/zerolog"
path       = "transports/zerolog"
changelog  = "transports/zerolog/CHANGELOG.md"
sh
# Author a changeset describing this PR
monorel add --package "transports/zerolog:minor" --message "Adds Lazy() helper."

# Preview the next release locally
monorel plan
# PACKAGE             FROM     BUMP   TO       TAG
# transports/zerolog  v1.6.1   minor  v1.7.0   transports/zerolog/v1.7.0
#
# 1 package(s) to release; 1 changeset(s) consumed.

# Apply: write CHANGELOGs, delete consumed changesets, commit, tag
monorel release
git push --follow-tags

That's the loop. The GitHub Action drives the same flow as an always-open release PR; merging the PR runs monorel release on the merge commit and publishes one GitHub Release per tag.