Skip to content

Operations Release Process FR

CyberMind-FR edited this page Oct 11, 2026 · 1 revision

Opérations : processus de release

À quoi ça sert. Comment une release SecuBox est coupée (tag v3.0.0-alpha.N), quels workflows tournent, quels fichiers aboutissent sur la release GitHub, et comment vérifier un téléchargement.

Couper une release

Pousser un tag v* lance trois choses en parallèle :

Workflow Fichier Produit
Release release.yml orchestre la construction des paquets, des images système, du live USB, la publication apt, les notes de release et SHA256SUMS
Build SecuBox .deb packages build-packages.yml les .deb (arm64 et amd64), publiés dans la release et le dépôt
Build Installer ISO build-installer-iso.yml l'installateur sans écran (amd64), ISO compressée et image USB

Un tag contenant alpha, beta ou rc est publié en pré-release. release.yml peut aussi être lancé à la main (workflow_dispatch) : version, construction ou non des images, publication ou non dans le dépôt apt, suite Debian (trixie par défaut).

Les notes de release sont écrites par un heredoc shell dans release.yml : n'y mettez jamais de backtick, le shell l'exécuterait.

Contenu d'une release

Fichier Description
Images système (secubox-<profil>-<carte>-<suite>.img.gz) MOCHAbin, Raspberry Pi 400 et VM x64 ; le profil de chaque carte vient de son config.mk (lite pour l'ESPRESSObin, isp et full ailleurs). Les images ESPRESSObin ne font pas partie des releases planifiées mais se construisent à la demande.
Live USB x64 (GRUB, UEFI et BIOS), Raspberry Pi 400 (kiosque par défaut) et MOCHAbin (U-Boot) ; entrées de démarrage : Live avec persistance, Kiosque, Console TUI, Pont, Installer sur disque, En RAM
Installateur secubox-installer-amd64-<suite>.iso.gz et .img.gz : démarre puis installe sur le premier disque, sans écran ni clavier. Il efface ce disque.
Scripts create-qemu-arm64-vm.sh, create-vbox-vm.sh
Sommes de contrôle SHA256SUMS et SHA256SUMS.gpg

Les images brutes .img ne sont pas publiées, seulement les compressées.

La limite de 2 Gio et les fichiers .partNN

GitHub refuse tout fichier de release de 2 Gio ou plus. Le workflow du live USB :

  1. compresse en gzip toute image brute restante ;
  2. découpe tout fichier encore supérieur à environ 2 Go en parts de 1900 Mo nommées <fichier>.part00, <fichier>.part01, ... (cas habituel : l'image Raspberry Pi).

Réassembler, décompresser puis écrire :

cat secubox-<image>.img.gz.part* > secubox-<image>.img.gz
gunzip -c secubox-<image>.img.gz | sudo dd of=/dev/sdX bs=4M status=progress
sync

Remplacez /dev/sdX par le bon périphérique (lsblk pour le trouver) ; dd l'efface.

Vérifier un téléchargement

SHA256SUMS liste chaque fichier publié par son nom seul, parts comprises : il fonctionne à côté des fichiers téléchargés. Il est signé en clair (SHA256SUMS.gpg) avec la clé du dépôt packages@secubox.in.

gpg --verify SHA256SUMS.gpg
sha256sum -c SHA256SUMS

Vérifiez les sommes avant de réassembler ou d'écrire. sha256sum -c signale les fichiers absents ; ignorez ceux que vous n'avez pas téléchargés (--ignore-missing).

Si une release est partielle

Les jobs de release livrent ce que les jobs amont ont produit : une carte en échec n'annule pas les autres, et un nouvel essai supprime les fichiers qu'il renvoie. Causes vues : un profil refusé par la porte (scripts/verify-profile.sh, voir Profils), un artefact disparu (BlobNotFound sur le job publish), un runner sans espace disque. Relancer les jobs en échec ; si le tag lui-même doit bouger, supprimer la release partielle avec son tag puis repousser le tag.

Contrôles après la CI

  • tous les fichiers attendus présents, SHA256SUMS cohérent ;
  • l'installateur démarre en VM et s'installe sur un disque vierge ;
  • le dépôt apt sert les nouvelles versions (Operations-APT-Repository-FR).

Voir aussi

Operations-APT-Repository-FR · Operations-Runbook-FR · Live-USB-FR · Installation-FR · Profils · Trixie · Operations-Release-Process

SecuBox | FR | DE | 中文 | v3.0.0-alpha.12


Projet

Soutenir


🔴 BOOT — Démarrer

🟢 ROOT — Configuration

🟣 MIND — Modules

🔵 MESH — Référence

🟠 WALL — Matériel

🤖 Workflow Agents


Liens

Clone this wiki locally