-
Notifications
You must be signed in to change notification settings - Fork 8
Use Debian Trixie as baseimage and official language images when available #68
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
base: prerelease/sdk-12
Are you sure you want to change the base?
Conversation
|
I'm using snapshot.debian.org to make the builds reproducible just like we did with Ubuntu. For security repositories (like debian-security), the expiration is enforced to prevent users from installing outdated security updates, as these can quickly become unsafe. When the Release file expires, apt will refuse to use the repository for updates. This would make the build fail. I'm investigating alternatives like manipulating the |
7b30dab to
7e1e56f
Compare
912a689 to
ef6ff38
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This pull request modernizes the Docker build process by migrating all language templates from Ubuntu to Debian snapshot-based images for better reproducibility. The changes update multiple Dockerfiles to use deterministic Debian Trixie snapshots, modernize the machine-guest-tools installation process, and enhance CI workflows with updated tooling and artifact management.
Key changes include:
- Migration from Ubuntu to Debian Trixie snapshot images across all language templates
- Refactored
machine-guest-toolsinstallation with better verification and non-determinism fixes - Updated GitHub Actions workflow to use newer Cartesi CLI version and add artifact uploads
Reviewed Changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| rust/Dockerfile | Migrated to Debian Trixie and official Rust image, updated machine-guest-tools installation |
| ruby/Dockerfile | Switched to official Ruby image on Debian Trixie base |
| python/Dockerfile | Adopted official Python image with multi-stage build for virtual environment |
| lua/Dockerfile | Converted to Debian Trixie base image |
| go/Dockerfile | Updated to use official Go image with Debian Trixie |
| cpp/Dockerfile | Migrated to Debian Trixie base |
| cpp-low-level/Dockerfile | Converted to Debian Trixie with reorganized machine-guest-tools handling |
| .github/workflows/build.yaml | Updated Cartesi CLI version and added artifact upload steps |
| ruby/.dockerignore | Added .bundle exclusion |
| python/.dockerignore | Added .cartesi and .venv exclusions |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
There's already an update at docker-library/official-images#19823 Will work on this soon. |
645ad91 to
c9dded1
Compare
This pull request modernizes and hardens the Dockerfiles for all supported languages by switching from Ubuntu to Debian "trixie" base images, introducing reproducible builds using snapshot.debian.org, and improving the installation process for
machine-guest-tools. It also includes several clean-up and security enhancements, such as stricter verification of downloaded packages and improved build determinism.Base image and build reproducibility improvements:
cpp-low-level/Dockerfile,cpp/Dockerfile,go/Dockerfile,lua/Dockerfile,python/Dockerfile) now use Debian "trixie" snapshot images instead of Ubuntu, with apt configured to use snapshot.debian.org for fully reproducible builds. Custom apt configs are added to handle expired snapshots and insecure TLS for the initial update. [1] [2] [3] [4] [5]Machine guest tools installation and verification:
machine-guest-toolsis now performed in a more secure and reproducible way: a SHA512 checksum file is injected and verified before installing the downloaded.debpackage, and the process is unified across all Dockerfiles. [1] [2] [3] [4] [5]Build and runtime environment clean-up:
apt-get dist-cleanstep is added to further strip non-determinism from the final images. [1] [2] [3] [4] [5]Language-specific improvements:
PATH, and runs as a non-root user (dapp).golangimage for cross-building, simplifying the build process and removing manual installation of Go..dockerignore updates:
.cartesi,.venv,.bundleto.dockerignorefiles to prevent local development artifacts from being included in Docker build contexts. [1] [2]These changes collectively improve security, reproducibility, and maintainability of the build process for all supported languages.