Forgejo Runner

Che cos'è Forgejo Runner
Se usi #forgejo e desideri automatizzare i processi di sviluppo, Forgejo Runner è uno strumento che non puoi perderti.
Se, invece, non sai cos'è #forgejo, clicca sulla parola e leggi l'articolo che avevo pubblicato qui sul blog.
Definizione
Forgejo Runner è un sistema di automazione che esegue compiti in background quando accadono determinati eventi nel tuo repository. In altre parole, ti permette di automatizzare il flusso di lavoro del tuo progetto senza intervento manuale.
Come funziona
Quando effettui un push, apri una pull request, o altro ancora, Forgejo Runner può automaticamente:
- Eseguire test del codice
- Compilare il progetto
- Distribuire l'applicazione
- Generare documentazione
- Eseguire controlli di qualità
Il tutto accade in automatico dietro le quinte, senza che tu debba fare nulla.
Perché è utile
Immagina di dover controllare manualmente che il tuo codice non abbia errori ogni volta che lo carichi. Sarebbe noioso, vero? Forgejo Runner elimina questo problema. Puoi definire una volta le regole che desideri applicare, e il sistema le seguirà automaticamente per ogni nuovo commit.
Questo significa codice più pulito, meno errori e molto meno lavoro manuale.
Un esempio pratico
Vogliamo che che ogni volta che qualcuno contribuisce al progetto, il codice venga testato automaticamente. Con Forgejo Runner, puoi impostare una regola che dice: “Quando ricevi un nuovo push, esegui i test”. Se i test falliscono, riceverai una notifica. Se passano, tutto procede normalmente.
Forgejo Runner e Docker
Una delle migliori pratiche è eseguire i compiti dentro container Docker. Questo è diventato, ormai, lo standard di fatto nel settore.
Utilizzare Docker con Forgejo Runner offre numerosi vantaggi: isolamento completo tra i vari compiti (un test non interferisce con un altro), ambienti di esecuzione riproducibili e coerenti, e la certezza che il codice funzionerà allo stesso modo sia sulla tua macchina che sui server di produzione.
In pratica, invece di eseguire i compiti direttamente sul sistema operativo host, Forgejo Runner li avvia all'interno di container Docker preconfigurati. Questo significa che puoi definire esattamente quali dipendenze, librerie e versioni delle applicazioni servono per i tuoi test o per la compilazione, senza doverti preoccupare di conflitti con altre configurazioni.
Pratica
Premesso quanto detto sopra, eseguire il nostro workflow in un container docker ci permette di avere un alto livello di sicurezza, sopratutto in un server condiviso. Per rendere semplice l'esecuzione, ho pensato di realizzare un file docker compose (e un .env) con tutto il necessario: registrazione, aggiornamento automatico e avvio automatico. Trovate il codice di questo mini progetto qui (ovviemente sempre ospitato su forgejo).
Configurazione
Per prima cosa assicuratevi che la vostra istanza di forgejo abbia le action abilitate (altrimenti non vedrete la voce del menù). Per poter aggiungere un runner al vostro workflow, sarà necessario generare un token. Andate su Forgejo Admin Panel → Runner (o Runners) (in alternativa potete aggiungere il runner al singolo progetto git)
Seguite le istruzioni presenti nel link sopra, compilando le varibili (file .env) con i vostri parametri, e lanciate (docker compose up) il vostro container. Se tutto ha funzionato, vedrete il runner attivo nella schermata web di forgejo.
Adesso passiamo ad utilizzarlo.
Utilizzo
Vedi documentazione al link: https://forgejo.org/docs/latest/user/actions/overview/
Crea il file forgejo/workflows/test.yml
Esempio di workflow
forgejo/workflows/test.yml
name: Test Workflow
run-name: Eseguito da ${{ forgejo.actor }}
on: [push]
jobs:
test-job:
# Qui specifichi su quale runner deve girare il job
# Deve corrispondere a una delle etichette in RUNNER_LABELS
runs-on: docker
steps:
- name: Stampa un messaggio
run: echo "Ciao mondo! Questo job sta girando sul mio runner Docker."
- name: Mostra informazioni sul sistema
run: |
echo "Utente corrente: $(whoami)"
echo "Directory corrente: $(pwd)"
uname -a
Conclusione
Forgejo Runner è essenzialmente un assistente che automatizza i compiti ripetitivi nel tuo flusso di lavoro di sviluppo. È perfetto se desideri risparmiare tempo, ridurre errori umani e mantenere la qualità del tuo codice consistente nel tempo.
Se stai già usando Forgejo, integrarvi Forgejo Runner (preferibilmente con Docker) potrebbe aiutarti ad incrementare la produttività grazie alle automazioni.
Seguimi su mastodon: @magostinelli@mastodon.uno
Articolo pubblicato con licenza CC BY-NC-SA