From GoReleaser to semrel
This guide is for teams moving from .goreleaser.yaml driven releases to semrel.
Mapping at a glance
Section titled “Mapping at a glance”| GoReleaser area | semrel approach |
|---|---|
| Version/changelog from commits | analyzer + generator plugins |
| Build matrix and archives | CI build jobs (go build, archive tooling) |
| nfpm packages | @semrel/nfpm |
| Registry/endpoint publish | @semrel/oci / @semrel/generic-http |
Recommended rollout
Section titled “Recommended rollout”- Keep your build matrix in CI and output all artifacts into
dist/. - Add semrel for versioning/changelog and run in dry-run.
- Replace GoReleaser packaging with
@semrel/nfpmwhere required. - Replace GoReleaser publish targets one by one with semrel publishers.
- Remove GoReleaser release orchestration once parity is reached.
Example plugin chain
Section titled “Example plugin chain”plugins: - uses: @semrel/github
- uses: @semrel/conventional
- uses: @semrel/changelog-md args: file: CHANGELOG.md
- uses: @semrel/nfpm args: config: packaging/nfpm.yaml target: dist/packages packagers: deb,rpm,apk
- uses: @semrel/oci args: ref: ghcr.io/your-org/myapp:{version} artifacts: dist/myapp-linux-amd64,dist/myapp-linux-arm64Risks and checks
Section titled “Risks and checks”- 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.