-
Notifications
You must be signed in to change notification settings - Fork 181
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
Reproducible container image builds #1047
Comments
ProposalWe can take advantage of the Debian snapshot archives and pin our packages by specifying a date. There's already prior art for that, thanks to the incredible work of @AkihiroSuda on reproducible containers. As for PyMuPDF, it is available from the Debian repos, so we won't have to build it from source. Here are a few other obstacles that we can overcome:
|
Add a CI job that uses the `reproduce.py` dev script to enforce image reproducibility, for every PR that we send to the repo. Fixes #1047
Add a CI job that uses the `reproduce.py` dev script to enforce image reproducibility, for every PR that we send to the repo. Fixes #1047
Add a CI job that uses the `reproduce.py` dev script to enforce image reproducibility, for every PR that we send to the repo. Fixes #1047
Add a CI job that uses the `reproduce.py` dev script to enforce image reproducibility, for every PR that we send to the repo. Fixes #1047
Add a CI job that uses the `reproduce.py` dev script to enforce image reproducibility, for every PR that we send to the repo. Fixes #1047
On build reproducibility
Our Dangerzone container image is currently not reproducible. This means that if we build the container image now and someone rebuilds it tomorrow, the result will probably be different. Why is this important? The concept of reproducible builds and their importance is explained in https://reproducible-builds.org/, but there is a specific reason why it's important for our project.
Currently, we build and sign the Dangerzone container image in machines that we own, because we don't trust third-party servers. A security hole in GitHub, or in our CI pipeline (check out the Ultralytics cryptominer saga), may allow attackers to plant a malicious image with no detection. There are a few drawbacks with this approach though:
On the other hand, reproducibility opens the door for building the image in third-party servers. If the image has provenance information, e.g., the commit it was built from, then third-parties can rebuild it locally, and check that the contents are exactly the same byte-for-byte. For an application of this, check out #1006.
Current limitations
We've stated that our current container image is not reproducible, but we haven't explained why. There are two main reasons why this is the case:
The text was updated successfully, but these errors were encountered: