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.
-
Sign up for travis-ci (its free for opensource projects, choose the right license for your project)
-
Link and authorize it for your projects (travis will walk you through this)
-
Add an API token for GoReleaser so it can update your repository with binary builds and release notes.
-
Add
.travis.ymland .goreleaser.yml, then configure them for your project. You can check out my examples in the k8sCapcity project. -
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.

