In un precedente articolo abbiamo spiegato come configurare una codeschmiede autosufficiente utilizzando Forgejo, un'alternativa open source a GitHub. Ora, in questo numero, ci addentriamo in dettaglio su come arricchire questa codeschmiede con pipeline automatizzate, grazie ai runner Forgejo. L'idea è di utilizzare i runner per eseguire automatizzazioni simili a quelle gestite da GitHub-Actions, con un vantaggio: la sintassi YAML è quasi interamente compatibile, quindi migrare un workflow non richiede grandi modifiche.

Per fare funzionare le pipeline CI/CD su Forgejo, hai bisogno di registrare un runner. Questo componente prende i lavori dal server, li esegue e comunica il risultato di volta in volta. I runner non richiedono porte aperte per funzionare, quindi possono essere tranquillamente utilizzati in una rete domestica.

Le Forgejo-Actions replicano la logica dei GitHub-Actions, permettendo di automatizzare molti processi, come test automatici, costruzione di immagini container, deploy su server e altri compiti di sviluppo software. Una codeschmiede moderna non serve solo a conservare codice; è anche un motore per semplificare e velocizzare il lavoro attorno al codice.

Azioni automatizzate basate su eventi

Il concetto alla base di CI/CD (Continuous Integration e Continuous Delivery) è che ogni modifica al codice deve essere integrata, testata e consegnata il prima possibile. Per rendere possibile questa logica, è necessario un sistema che reagisca automaticamente a eventi specifici nel repository. Questi eventi possono includere ad esempio un push su un ramo come main, una modifica sul codice o il completamento di una Pull Request.

Forgejo-Actions permette di configurare queste reazioni tramite file YAML all'interno del repository. Ogni file YAML descrive quando attivare un'azione e quale essa debba eseguire. In seguito, un runner attivo riceverà il lavoro e lo eseguirà in un ambiente isolato, simulando una vera catena di sviluppo automatizzata.

Struttura e sintassi delle Actions

I file YAML per le Forgejo-Actions sono organizzati in workflow, che comprendono gli eventi di attivazione, i job (incarichi) e le steps (azioni precise). L'utilizzo di questa struttura modulare permette di suddividire i processi in maniera chiara, mantenendo l'interoperabilità con GitHub-Actions.

Per dare un esempio, un workflow potrebbe iniziare quando un utente pubblica una modifica sul branch principale e successivamente potrebbe essere suddiviso in diversi job, ciascuno dedicato a test diversi o a compiti come la creazione di un immagine Docker. La sintassi chiara e il supporto per gli stessi comandi di GitHub-Actions rendono queste configurazioni molto accessibili.

Esempio di configurazione

Un file YAML potrebbe apparire in questo modo:

    • Eventi: attivare un runner quando c'è un push su main
    • Job 1: eseguire un test unitario
    • Job 2: build di un immagine container
    • Job 3: deploy in un ambiente di staging

Questi job possono eseguire azioni precise, utilizzando script, comandi shell o API esterne. La modularità ti permette di gestire compiti complessi in modo organizzato.

Runner, come funzionano

I runner sono componenti fondamentali per l'esecuzione delle Actions. Ogni volta che un evento specifico avviene, la piattaforma Forgejo assegna un lavoro ad un runner registrato. Questi eseguono la pipeline richiesta, inviando dati in tempo reale. Non è richiesto alcun accesso remoto: i runner possono funzionare anche su una rete domestica, connessi via Internet ma senza aprire porte di accesso.

I runner supportano anche l'isolamento delle esecuzioni, evitando che un job interferisca con un altro. Questo livello di isolamento garantisce un ambiente sicuro e controllato per ogni automazione.

Vantaggi del CI/CD con Forgejo

Adottare un sistema come Forgejo con Actions integrato permette di:

    • Migrazione semplice: la sintassi YAML è compatibile con GitHub-Actions; non si richiede una riscrittura completa del workflow
    • Isolamento sicuro: i runner eseguono i task in ambienti isolati
    • Supporto multipiattaforma: le pipeline sono utilizzabili in ambienti cloud, on-premise e domestici
    • Scalabilità: è possibile aggiungere nuovi runner man mano che aumentano i carichi di lavoro, mantenendo la performance

In sintesi, Forgejo si presenta non solo come un'ottima alternativa a GitHub, ma anche come una piattaforma solida per chi desidera automatizzare il processo di sviluppo del software in modo semplice, sicuro e economico.