Automate release process and binary builds
Discussed in 2020-10-11 meeting.
Summary
Automate the creation of multi-OS, multi-arch binaries of TeleIRC releases
Background
Is your feature request related to a problem? Please describe:
When we release TeleIRC, the person cutting the release manually builds the Go binary and uploads it to GitHub. This is OK, but an end-user who is not using the same OS and architecture as the person cutting a release must build their own binary. Unwieldy for the average person!
Describe the solution you'd like:
Automatically build binaries for the most common architectures and operating systems.
Details
We checked out fellow Go project Matterbridge to see how they do it. Matterbridge releases include countless binaries for multiple operating systems and different architectures. It appears they have some automation for this, but it is unclear how it works:
- Matterbridge
.goreleaser.yml - Matterbridge
.github/workflows/development.ymlGitHub workflow
Outcome
Make TeleIRC binaries available to end-users on a variety of platforms without making end-users manually build/compile TeleIRC
@Zedjones mentioned this in the last developer meeting, and I wanted to make note of it here before I forgot: Inject build-time variables with Golang
Discussed in 2020-11-15 meeting.
@Zedjones is leading the effort to explore GitHub Actions as a tool to help us figure out a new C.I. pipeline and help automate the release process. Over the past few weeks, we have spent time on the release process since we are working to provide iterative, regular releases. This has bubbled up in priority, and @Zedjones was needing a break from all the unit tests. 😀
We'll check back in on this at the end of the sprint on 29 November 2020.
@Zedjones has done a mock of what GH Actions could look like with TeleIRC. Overall, this looks very promising and I am +1 to moving off TravisCI.
In addition to the GH actions, we would like to support these architectures on releases:
- Darwin-64bit
- Windows-64bit
- linux-64bit
- arm-64bit
- openbsd-64bit
- freebsd-64bit