-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
use goreleaser to build binaries on tagged releases #252
Conversation
Great work During my past experience with GoReleaser and multi-arch support for Docker images, I can say that it is not easy to do in a clean way. At the end of the story, we didn't use it for other projects like packet-ccm or CAPP for that reason. We have to support as part of the release workflow something that can build and push multi-arch Docker images as well, not only the binaries. And I would like to merge a PR that contains both (DCO please) |
I've made changes to publish amd64 Docker images in the latest builds. I'm testing changes to add arm64 and armv6/armv7 images. |
Hmm @gianarb, it looks like this would only be possible for goreleaser to push multiple architectures images using a separate Docker repository for each architecture (examples: tinkerbell/tink-server, tinkerbell/tink-server-arm64, tinkberll/tink-server-armv6, etc). This is due to goreleaser/goreleaser#530 I see four options here:
Which would you prefer? |
A differentiator between this project and packet-ccm/csi-packet is that this project benefits from providing tink-cli binaries where those other projects are primarily consumed as containers. What binaries do Tinkerbell users need? Only If we take a |
We should not tight ourself to the idea that containers are the only one to run Tinkerbell because it is not true. Anyway, from this repo we should release tink-cli, tink-server, and tink-worker as binary + containers version of them in multi-arch and OS.
I agree and that's why I think docker + binaries should be part of the same PR because you will see how complicated it is to make with goreleaser. I saw you had a look at tinkerbell/proposals#5 , I will explain it with your comment but I think we should get there with one PR :). Ideally (but I didn't write anything about it yet) to test a release process we can spin up a |
I see. Work in tinkerbell/proposals#5 should be allowed to finish first. I'll close this PR in its current form (so others don't wait for this one and so they aren't prevented from trying alternate directions). I may revisit this.
I don't see the need for a nightly release. If we are using semver and pushing latest images from the default-branch (on every commit), what purpose do nightly binaries serve? I think the only reason nightly makes sense now is that we have not stamped a single tagged release. Why not just push 0.1.0 (#74) on all of the current projects in their current state? This is probably a better conversation for https://github.com/tinkerbell/proposals/pull/5/files#diff-5ae2d202d9cad195081db97be153eaa9R139. |
nightly is just a very easy way to test the release process continuously with a short feedback loop |
Description
See https://github.com/displague/tink/releases for an example (based on this commit) of what a release will look like.
Future iterations could bundle these binaries with documentation as archive files, or build debs, rpms, Docker images, etc.
Goreleaser's own .goreleaser.yml is a handy demonstration: https://github.com/goreleaser/goreleaser/blob/master/.goreleaser.yml
Why is this needed
Fixes: #73
How Has This Been Tested?
How are existing users impacted? What migration steps/scripts do we need?
Checklist:
I have: