FEAT: Auto-update agent — mode Docker (images taguées + mise à jour propre) #97
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall#97
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Contexte
L'agent Docker (
eltruncho/heimdall-agent) est déployé avecimage: ...:latest— aucune gestion de version ni de mise à jour automatique. Décision du chef de projet (12/08/2026) : updater intégré (Option B) — l'agent compare sa version à l'endpoint central et se met à jour lui-même.watchtowerécarté.Référence — étude Pangolin (fosrl/pangolin, 12/08/2026)
make build-release-amd64 tag=$TAG→fosrl/pangolin:${TAG}) — jamais:latestseul pour une release ;--build-arg VERSION) et comparée par l'UI (ProductUpdates.tsx, semver) ;État actuel Heimdall (constats code)
docker/docker-compose.prod.yml:heimdall-agent: image: eltruncho/heimdall-agent:latest(ligne 129) — image jamais publiée par le pipeline (voir #95).À faire — updater intégré
heimdall-agent:vX.Y.Z+:latest(voir #95) ; compose prod versionnable (AGENT_IMAGE_TAGenv, défaut tag courant) ; documenter le passage de:latestà un tag précis.DockerUpdateServicecôté agent :InformationalVersion) àGET /api/updates/latest(même endpoint que le mode natif, ticket #96) ;docker pull eltruncho/heimdall-agent:<tag>puis recreate du conteneur via le socket Docker monté en lecture restreinte (accès au conteneur cible uniquement —--label+ filtre, pas d'accès administrateur global) ou API Docker en TLS ;AgentDetail.razor(mode Docker détecté) : version courante, version dispo, badge, bouton « Mettre à jour », statut (à jour / dispo / en cours / échec).network_mode: host— vérifier que le socket Docker monté fonctionne dans ce mode (le conteneur peut joindre le socket du host).Critères d'acceptation
Fichiers concernés
src/Heimdall.Agent/Services/DockerUpdateService.cs(nouveau)src/Heimdall.Web/Controllers/UpdatesController.cs(partagé avec #96)src/Heimdall.Web/Components/Pages/AgentDetail.razordocker/docker-compose.prod.yml(+docker/docker-compose.ymldev)docs/(déploiement agent, stratégie de mise à jour)Maquette
Description
Mêmes éléments UI que #96 déclinés pour les agents Docker : image installée vs disponible (mono), bouton « Mettre à jour vers 1.1.0 » (pull + recreate), statut, contrôle par site avec straté
Maquette
Décision chef de projet (12/08/2026) : updater intégré (Option B). watchtower écarté. L'agent compare sa version via /api/updates/latest et se recrée lui-même via le socket Docker restreint.
Maquette the-designer intégrée (14/08/2026) :