Come è fatto
Da un tag alla tua macchina
Nessuno carica niente a mano. Parte un tag; l'ultimo passo è il tuo gestore di pacchetti.
Due clanker, un nastro, e una chiave che non esce di casa.
1 Il tag
Un rilascio è un tag git. Tutto quello che segue è una conseguenza di quello: non c'è nessun bottone «pubblica» che qualcuno preme.
2 La costruzione
GitHub Actions compila la release, ci infila dentro l'app cicchetto e sforna
.deb, .rpm,
.pkg.tar.zst e l'immagine container. Macchine pubbliche,
log pubblici, tutto ripetibile a partire dal tag.
3 Il campanello
Quando la build è verde il workflow suona un campanello sulla macchina che pubblica: una sola richiesta autenticata, raggiungibile solo dagli indirizzi di GitHub. Non porta dati — dice soltanto «vai a guardare».
4 La macchina usa-e-getta
La macchina che pubblica è FreeBSD e non ha nessuno degli strumenti di indicizzazione di Debian, RPM o Arch. Allora ne affitta una, la accende, le fa costruire gli indici a partire dai pacchetti pubblici, si riprende il risultato e la distrugge. Vive un paio di minuti e non vede mai un segreto.
5 La firma
Gli indici tornano a casa e lì vengono firmati, con una chiave che esiste su una macchina sola. Non in un secret della CI, non su GitHub: un workflow bucato al massimo pubblica un pacchetto sbagliato, non ne firma uno suo.
6 Il tuo aggiornamento
Da lì in poi è solo apt upgrade,
dnf upgrade o pacman -Syu, con
la firma verificata dal tuo gestore di pacchetti.
Come si configura →
E il codice?
Scritto come viene pubblicato: allo scoperto, e in buona parte da macchine a cui viene detto esattamente cosa fare. grappa lo costruiscono tre sessioni di Claude legate insieme dentro tmux — una raccoglie le richieste su IRC, una fa da project manager, una scrive il codice — con un umano che tiene in mano le decisioni. È un modo strano di mandare avanti un progetto software, quindi me lo sono scritto.
Tre cappelli e un pane di tmux →
È tutto su GitHub: il codice, le issue, il workflow di rilascio che fa tutto quello che c'è scritto qui sopra.
Pronto?
Entra con un nick — sei su IRC in pochi secondi.
Provalo ora →