Skip to main content
Deutsch  •  English  •  Español  •  Français  •  Italiano  •  Polska  •  Portuguese  •  Български  •  Русский  •  Українська  •  やまと  •  中国  •  فارsi

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:

  1. Build e Test delle PR (Pull Request):
    • Ogni volta che viene aperta o aggiornata una pull request, la CI compila i moduli coa e oa su 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.
  2. 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.
  3. 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 add e i comandi nativi di aggiornamento di sistema.

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.