prepare first release with graceful shutdown + containerfile + push to #4
Reference in New Issue
Block a user
Delete Branch "1.0"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
prepare first release with graceful shutdown + containerfile + push to hub script
@Herald
Review Feedback
5 issues found.
Summary
Les modifications apportées dans ce PR introduisent correctement un arrêt gracieux (graceful shutdown) via
CancellationTokendetokio-util, une capture des signaux SIGTERM/SIGINT, ainsi qu'un Containerfile pour construire l'image Docker et un script de build/push. L'architecture générale est saine. Cependant, quelques points de robustesse sont à améliorer : version de Rust non stable, image de base Debian en version testing, portabilité des signaux (Linux only), import inutile, et précision du script de push. Pour une première release, ces ajustements garantiront une meilleure maintenabilité et reproductibilité.Cost: $0.00098065
@@ -0,0 +1,12 @@FROM rust:1.96 as builderL'image Rust
1.96n'est pas une version stable connue. Privilégiez une version précise et stable (ex:rust:1.85.0) pour garantir la reproductibilité des builds. Si vous utilisez une nightly, indiquez-le clairement avec une date ou un digest.@@ -0,0 +5,4 @@RUN cargo build --releaseFROM debian:trixie-slimDebian
trixieest actuellement une version Testing, pas encore stable. Utilisez une version stable commedebian:bookworm-slim(Debian 12) oudebian:bullseye-slimpour éviter des surprises lors de mises à jour non contrôlées.@@ -0,0 +17,4 @@.echo "Pushing ${IMAGE}:${TAG}..."buildah push "${IMAGE}:${TAG}"La commande
pushne précise pas le registre complet. Comme l'image a été taguée avecdocker.io/..., cela fonctionnera, mais il peut être plus explicite d'utiliserbuildah push "docker.io/${IMAGE}:${TAG}"pour éviter toute ambiguïté. Ajoutez également un taglatestsi cela est souhaité pour les releases.@@ -1,5 +1,4 @@use anyhow::anyhow;use axum::body::{Body, Bytes, to_bytes};use axum::body::{Bytes, to_bytes};L'import
Bytessemble inutilisé dans ce fichier (le nom est importé mais jamais référencé). Supprimez-le pour éviter un avertissement du compilateur. Vérifiez la suite du fichier, mais si non utilisé, il est préférable de le retirer.@@ -60,2 +65,3 @@tokio::try_join!(bot.start(rx), api::start(app_state))?;let signal = async {let mut sigterm = signal(SignalKind::terminate())?;Le code utilise
tokio::signal::unixqui ne fonctionne que sous Linux/Unix. Assurez-vous que l'application ne cible que ces systèmes, ou ajoutez une gestion alternative pour Windows (ex:tokio::signal::ctrl_c). Pour une première release, cela peut être acceptable si le déploiement est Linux uniquement.Graceful shutdown work !