Forgejo Runner

Forgejo

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:

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