Trading Fish The website of Hector Castro

Creating Go Application Releases with GoReleaser

A few weeks ago, I set out to upgrade the version of Go (1.6 to 1.15) used to build an old command-line utility I developed, named Heimdall. Heimdall provides a way to wrap an executable program inside of an exclusive lock provided by a central PostgreSQL instance via pg_try_advisory_lock.

Now, Heimdall is nice little utility and all (if you’re intrigued, check out the README), but the most interesting part of the upgrade process came after I got everything working and started to think about how to create a new release. That’s when I came across GoReleaser.

GoReleaser

GoReleaser is a release automation tool specifically for Go projects. With a few bits of YAML configuration, GoReleaser provided me with:

  • Hooks into the Go module system for managing library dependencies
  • The ability to easily produce a set of build artifacts for multiple operating systems and computer architectures
  • Checksums for each of the build artifacts
  • Easy integration with GitHub Actions to automate publishing releases on tagged commits

If you are responsible for Go applications that are in need of a uniform release process, I find it really hard to beat GoReleaser.