grappa

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 →