Workflow: Continuous Integration (CI) e Automazione
L'evoluzione e la manutenzione di un ecosistema cross-distribuzione come penguins-eggs — che abbraccia diverse famiglie Linux (Debian, Arch, Fedora, openSUSE, Alpine) e molteplici architetture (x86_64, ARM, RISC-V) — richiedono un'infrastruttura di Continuous Integration robusta, trasparente e rigorosamente automatizzata.
1. Obiettivi della Pipeline CI
La pipeline di integrazione continua ha il compito di garantire che ogni modifica al codice sorgente (sia sul motore in Go coa, sia sul modulo nativo in C oa, sia sui tool di supporto) rispetti gli standard di stabilità:
- Compilazione incrociata: Verifica automatica della corretta compilazione dei binari su tutte le architetture supportate.
- Validazione dei pacchetti: Controllo della corretta costruzione dei pacchetti nativi per i rispettivi gestori (DEB, PKG, RPM).
- Test di regressione: Esecuzione di controlli preventivi per assicurare che il Parser, il Planner e i moduli di compressione rispondano correttamente ai contratti formali (
oa-plan.json).
2. Struttura dei Flussi di Lavoro (GitHub Actions)
L'automazione si basa su flussi di lavoro modulari ospitati all'interno dei repository ufficiali (.github/workflows/), strutturati per coprire le diverse fasi del ciclo di sviluppo:
- Build e Test delle PR (Pull Request):
- Ogni volta che viene aperta o aggiornata una pull request, la CI compila i moduli
coaeoasu ambienti di test isolati. - Vengono eseguiti i test unitari e i controlli di linting del codice Go e C per intercettare eventuali errori prima del merge sul ramo principale.
- Ogni volta che viene aperta o aggiornata una pull request, la CI compila i moduli
- Pubblicazione dei rilasci (Release Pipeline):
- Al tag di una nuova versione stabile, la pipeline genera automaticamente i binari compilati, firma i pacchetti e prepara i rilasci ufficiali pronti per essere distribuiti nei repository nativi di
eggs.
- Al tag di una nuova versione stabile, la pipeline genera automaticamente i binari compilati, firma i pacchetti e prepara i rilasci ufficiali pronti per essere distribuiti nei repository nativi di
- Aggiornamento dei Repository:
- I flussi automatizzati gestiscono la sincronizzazione dei pacchetti all'interno dei canali di distribuzione, permettendo agli utenti di ricevere gli aggiornamenti in tempo reale tramite
eggs tools repo adde i comandi nativi di aggiornamento di sistema.
- I flussi automatizzati gestiscono la sincronizzazione dei pacchetti all'interno dei canali di distribuzione, permettendo agli utenti di ricevere gli aggiornamenti in tempo reale tramite
3. Filosofia dell'Automazione
In linea con la Universal Strategy e il principio di trasparenza, la CI non deve essere una scatola nera: ogni script di compilazione e ogni azione di rilascio è codificata in modo dichiarativo e trasparente all'interno del repository, consentendo a qualsiasi sviluppatore o collaboratore di replicare esattamente l'ambiente di build della release ufficiale sulla propria macchina.