-
Notifications
You must be signed in to change notification settings - Fork 425
Add Rust-based rabbitmqadmin-ng and remove Python
#780
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: master
Are you sure you want to change the base?
Add Rust-based rabbitmqadmin-ng and remove Python
#780
Conversation
rabbitmqadmin-ng build stage to Ubuntu Dockerfilesrabbitmqadmin-ng build stage to Dockerfiles
da577d7 to
612343e
Compare
rabbitmqadmin-ng build stage to Dockerfilesrabbitmqadmin-ng build stage to Dockerfile-management.template
432a7f1 to
75f8e3e
Compare
rabbitmqadmin-ng build stage to Dockerfile-management.templaterabbitmqadmin-ng with Python fallback
75f8e3e to
e5aec78
Compare
|
From local testing: rabbitmqadmin show overview@tianon @yosifkit I don't have any way to test on an esoteric architecture. Are these built for pull requests? Would you mind directing me to the build logs / artifacts so I can test them out? |
ce7f657 to
6f0223b
Compare
|
I'd leave the Python version behind entirely. It's no longer maintained. Plus this tool is entirely optional. The OCI can be used without it. |
171dafe to
64e0428
Compare
33786ab to
a70d772
Compare
a70d772 to
32daba6
Compare
|
Everything is set for a review, thanks 😸 |
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.
I would remove rabbitmqadmin v1, or rather, not drag it along.
It is no longer maintained besides truly exceptional issues like security vulnerabilities (which are unlikely to be reported for such a tool).
One of the goals of rabbitmqadmin v2 as a native binary was to avoid numerous [older] Python CVEs that plagued several RabbitMQ images due to the inclusion of rabbitmqadmin v1.
Finally, there are some breaking changes in rabbitmqadmin v2 but the users seem to be adapting to them without any complaints, and rabbitmqadmin v2 is so far ahead in terms of features and test coverage that it feels like shipping two different tools at this point.
rabbitmqadmin v2 is a nice-to-have in this image. If the Rust toolchain does not support a particular platform, well, it won't be available but everything else that this image offers will be.
rabbitmqadmin-ng with Python fallbackrabbitmqadmin-ng and remove Python
The RabbitMQ management images now include the Rust-based `rabbitmqadmin-ng` CLI tool when possible. The deprecated Python version of `rabbitmqadmin` will no longer be available. This change adds a two-stage build to `Dockerfile-management.template`: - **Builder stage**: Attempts to compile `rabbitmqadmin-ng` from source using Rust toolchain installed via `rustup-init.sh`. The build links against the custom OpenSSL installation using `OPENSSL_DIR` and `RUSTFLAGS` with proper rpath configuration. - **Final stage**: Copies the Rust binary if build succeeded. The `versions.sh` script fetches the latest `rabbitmqadmin-ng` release tag from the GitHub API and calculates SHA256 checksums for both the source archive and Rust installer. These values are stored in `versions.json` and templated into the generated management Dockerfiles.
32daba6 to
5f3f9c0
Compare
Fixes #768
The RabbitMQ management images now include the Rust-based
rabbitmqadminv2 (rabbitmq/rabbitmqadmin-ngon GitHub, doc guide) CLI tool when possible. The deprecated Python version ofrabbitmqadminwill no longer be available.This change adds a two-stage build to
Dockerfile-management.template:rabbitmqadmin-ngfrom sourceusing Rust toolchain installed via
rustup-init.sh. The build linksagainst the custom OpenSSL installation using
OPENSSL_DIRandRUSTFLAGSwith proper rpath configuration.The
versions.shscript fetches the latestrabbitmqadmin-ngreleasetag from the GitHub API and calculates SHA256 checksums for both the
source archive and Rust installer. These values are stored in
versions.jsonand templated into the generated management Dockerfiles.