Skip to content

From GoReleaser to semrel

This guide is for teams moving from .goreleaser.yaml driven releases to semrel.

GoReleaser areasemrel approach
Version/changelog from commitsanalyzer + generator plugins
Build matrix and archivesCI build jobs (go build, archive tooling)
nfpm packages@semrel/packager-nfpm
Registry/endpoint publish@semrel/publisher-oci / @semrel/publisher-generic-http
  1. Keep your build matrix in CI and output all artifacts into dist/.
  2. Add semrel for versioning/changelog and run in dry-run.
  3. Replace GoReleaser packaging with @semrel/packager-nfpm where required.
  4. Replace GoReleaser publish targets one by one with semrel publishers.
  5. Remove GoReleaser release orchestration once parity is reached.
plugins:
- uses: @semrel/provider-github
- uses: @semrel/analyzer-conventional
- uses: @semrel/generator-changelog-md
args:
file: CHANGELOG.md
- uses: @semrel/packager-nfpm
args:
config: packaging/nfpm.yaml
target: dist/packages
packagers: deb,rpm,apk
- uses: @semrel/publisher-oci
args:
ref: ghcr.io/your-org/myapp:{version}
artifacts: dist/myapp-linux-amd64,dist/myapp-linux-arm64
  • Artifact paths in publisher plugins must match your CI outputs exactly.
  • Keep checksums/signing in CI or introduce a dedicated step before publishing.
  • Validate 1:1 release artifact parity for one full release candidate.
Back to Migration Hub