I have been enjoying writing golang applications for a few years now, and I naively assumed other people who wanted to use them could easily build the apps with instructions I provided easy enough.

I discovered that the differences between operating systems is enough that compiling the applications can be burdensome for others. My buddy @slm (hes kind of a big deal) mentioned I should check out goreleaser and I am glad I did.

I was able to setup a release pretty quickly with it and got this pretty page with compiled builds for mac, windows, and linux (including rpm and deb). Here is how I did it.

  1. Sign up for travis-ci (its free for opensource projects, choose the right license for your project)

  2. Link and authorize it for your projects (travis will walk you through this)

  3. Add an API token for GoReleaser so it can update your repository with binary builds and release notes.

  4. Add .travis.yml and .goreleaser.yml, then configure them for your project. You can check out my examples in the k8sCapcity project.

  5. Cut a release:

git tag -a v0.1.0 -m "First release"
git push origin v0.1.0

Watch travis spin on your new release, and then see the updated contents. Thank you goreleaser and travis-ci for your great projects.

Editor's note, August 24, 2026: In my opinion, GitHub Actions eliminated most reasons to use Travis CI, CircleCI, or other hosted CI runners. Even with GitHub's recent hosting issues, I really love GitHub Actions and the ability to self-host runners.

I maintain reusable GitHub Actions workflows for Go projects, Docker images, and Helm charts.