# 0005 — Mises à jour nocturnes, déclenchées par ce qu'apt propose Complète [0002](0002-paquets-a-jour-et-en-tetes-du-serveur.md) et [0004](0004-ci-sans-action-externe.md). ## Contexte Les images ne changeaient qu'à un push. Entre deux, elles ne recevaient ni version mineure de PostgreSQL ni correctif de sécurité. Le cache persistant du runner aggrave le problème : une couche `apt-get upgrade` déjà construite n'est jamais rejouée. Reconstruire sans cache chaque nuit recompilerait TimescaleDB quatre fois et republierait quatre images identiques aux précédentes. ## Décision - La CI tourne chaque nuit. Pour chaque version, elle tire l'image publiée et y simule `apt-get upgrade --with-new-pkgs`. - S'il reste des paquets à mettre à niveau, ou si l'image n'existe pas, elle construit avec une nouvelle clé `APT_REFRESH`, teste et publie. - Sinon elle ne construit ni ne publie : elle joue les tests sur l'image publiée. - La clé d'une image est gardée dans son label `fr.killinger.apt-refresh`. Un push la reprend quand l'image publiée est à jour, pour que le cache serve. - Les versions de TimescaleDB et de VectorChord ne sont pas concernées ([0003](0003-versions-de-timescaledb-et-vectorchord-epinglees.md)). ## Conséquences - Une version mineure de PostgreSQL ou un correctif Debian est publié la nuit qui suit son arrivée dans apt, sans intervention. - Une nuit sans mise à jour coûte une simulation apt et les tests, par version. - L'état de référence est l'image publiée, pas le cache du runner : un cache perdu ne provoque ni reconstruction ni publication inutiles. - Tant qu'une reconstruction échoue aux tests, rien n'est publié et elle est retentée la nuit suivante. - La simulation et la construction utilisent la même commande apt : après une publication, l'image n'a plus rien en attente et la nuit suivante ne reconstruit pas. - Une republication de l'image de base sous la même étiquette n'est reprise qu'à la prochaine reconstruction, par `--pull`. ## Attestée par `.gitea/workflows/docker.yml` (étape « Check for updates ») ; `Dockerfile` (`APT_REFRESH`).