-
Notifications
You must be signed in to change notification settings - Fork 706
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
Add sha256sums.txt to releases #110
Comments
Looking at Appveyor's docs, it is not clear to me that we could achieve that exact layout, with all the file hashes in the same file. As far as I understand, the artifacts from AppVeyor are pushed as they are ready, and there is no synchronization point where we have access to all the files from all the builds in the matrix and can produce that file. @FeodorFitsner, is that correctly understood? Prometheus |
I suspected this was the case :-/ Yea, since our build is pretty small maybe we could scrap parallel builds. |
Possibly we could make do using goreleaser. goreleaser creates and uploads sha256sums.txt, cross-compiles for Windows (and more that is not useful for this project). Been using it for a bit with success on this project: https://github.com/martinlindhe/gohash/releases |
@martinlindhe Is there a difference between that approach and using |
I think promu would be a better approach then. Was just posting about a tool that resolves this for us.
That is indeed one usage pattern for goreleaser. They also document CI integration on their homepage: https://goreleaser.com/#continous_integration |
I don't have a strong opinion of promu vs goreleaser, just wondered if I was missing something :) |
@carlpett just to respond to your comments (i also don't have a strong opionon of this)
Is this with regards to viruses and stuff? (This pr is about adding hashes to builds, which itself is to help improve "trust" in the binaries). I am not for reducing security / trust.
Not sure I agree that the release process must be comprehensible to a end user. Goreleaser looks at your git repository and works with it. Which means; you can only build binaries when git head is on the same revision as the release tag, and git is not in a dirty state. So in order to use it, you basically $ git tag -a v0.1.0 -m "First release" and it will do the rest |
This is taking a slightly philosophical turn, and might get subjective, but here is my reasoning:
Yes, as well as the lack of control over the installed versions of compilers etc.
Then I think we have the same ideal :) I fully agree that builds should be trusted and reproducible. But I would argue that since the CI system configuration is stored along with the code, building it on a "trusted" platform (depending on how much you trust AppVeyor et al) with the exact build steps checked out together with the code, is "more" reproducible than having a local Makefile or similar.
What I meant was tied in with the previous idea - the user can check the build logs from this "trusted" build platform and verify that things were built as expected.
This doesn't consider untracked source files that may be lying about, right? It is pretty easy to miss new files when stashing, for example (been there, done that). But again, these aren't hard and simple truths. |
Personally, I would like to be able to reproduce the exact binary locally as AppVeyor or travisCI produces (even better if i can cross-compile, since my main OS is not Windows) . Then I can know the generated binary is good by elimination of influence. I can agree Makefile is a bit arcane, but I find them handy ;-)
It does. If "git status" reports "working tree clean" then goreleaser is happy. |
Okay, I think we've taken this as far as is valuable (and perhaps a bit longer) :)
Are there any other options? Did I miss any pro/con in this summary? |
Our appveyor script should be updated to generate a checksum file, something like https://github.com/prometheus/prometheus/releases/download/v2.0.0-beta.0/sha256sums.txt
Useful for http://scoop.sh/ or https://chocolatey.org/ (?)
The text was updated successfully, but these errors were encountered: