Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Renovate: il bot che aggiorna automaticamente le dipendenze

Renovate è un automated dependency update tool che crea le pull request di aggiornamento al posto dello sviluppatore
Renovate è un automated dependency update tool che crea le pull request di aggiornamento al posto dello sviluppatore
Link copiato negli appunti

Renovate è un automated dependency update tool che crea le pull request di aggiornamento per il suo utilizzatore. In questo modo si riduce il rischio di rimanere bloccati a causa di librerie obsolete o vulnerabili. Il progetto è open source e il suo sorgente è disponibile su GitHub in un repository dedicato.

Che cos'è Renovate e cosa serve

Renovate scansiona i repository alla ricerca dei manifest e dei file di lock delle dipendenze. Quando trova una versione più recente e compatibile, genera automaticamente una pull request con il cambio di versione e tutte le informazioni utili a decidere se effettuare il merging (età della release, adozione, pass rate dei test, merge confidence..). Lo sviluppatore continua a lavorare sul prodotto, mentre un bot ordinato (e virtualmente "instancabile") si occupa della manutenzione del progetto.

Mantenere aggiornati package.json, immagini Docker e action di CI è spesso un lavoro infinito. Renovate, però, è altamente configurabile, in questo modo si possono adattare ritmo e modalità degli update: schedulare finestre di aggiornamento (ad esempio: solo durante la notte), raggruppare i pacchetti correlati, imporre delle regole diverse per patch, minor e major o abilitare l'automerge quando i test vengono superati. Tutto ciò avviene in un semplice renovate.json presente nel repository.

Renovate copre la gran parte degli stack usati nel web contemporaneo e non solo: JavaScript e TypeScript, Python, Java, .NET, Scala, Ruby, Go, Docker e oltre 90 package manager, non solo npm. Funziona su GitHub, GitLab, Bitbucket, Azure DevOps, AWS CodeCommit, Gitea, Forgejo e perfino Gerrit (in fase sperimentale). Se si lavora in multi-repo o polyglot (cioè con più linguaggi), questo significa un unico strumento e una sola policy per tutte le procedure che si devono affrontare.

Come eseguire Renovate

Esistono diverse opzioni per eseguire Renovate, dal zero-ops all'approccio auto-gestito. La prima è quella Cloud-Hosted con cui si installa l'applicazione su GitHub.com o Bitbucket Cloud e si selezionano i repository da abilitare. In questo caso non è necessario creare alcuna infrastruttura, quindi si tratta di una soluzione ideale per chi desidera iniziare ad utilizzare il bot in pochi minuti.

L'opzione Self-Hosted prevede invece di attivare un server Renovate nella propria rete con cui accedere a registri privati interni e avere il pieno controllo su ogni aspetto degli aggiornamenti.

Con la Pipeline/CI abbiamo invece una GitHub Action ufficiale, un runner per GitLab e un'estensione per Azure DevOps. In alternativa si può lanciare un semplice:

npx renovate

nella propria CI.

L'ultima opzione è invece quella della CLI pura. Utile nel caso in cui si preferisca integrare tutto manualmente con esecuzioni dirette dalla CLI.

Renovate e pull request

Le pull request sono pensate per essere "decision-friendly". Esse includono il diff del manifest/lockfile, note sulla versione, metadati che aiutano a capire il livello di rischio e possono rispettare le convenzioni per i nomi e le regole di branching già in uso. Con delle policy adeguate è possibile attivare l'automerge per le patch e le minor, lasciando alla revisione manuale solo i major upgrade. Tutto ciò riduce drasticamente il debito operativo sull'aggiornamento delle dipendenze.

L'utente può abilitare gradualmente le parti da un singolo repository, accendere l'automerge solo per patch e minor e monitorare il flusso. Nello stesso modo si possono raggruppare gli update per ridurre il numero di pull request, definire finestre di maintenance per non disturbare i rilasci, integrare con test in cui ogni pull request viene validata automaticamente.

Conclusioni

Renovate è tra le soluzioni più complete a livello di ampiezza dello spettro (linguaggi, registri, piattaforme..) e di profondità di configurazione. La documentazione ufficiale mette a confronto i diversi modi di eseguirlo e fornisce una pagina "Renovate vs Dependabot" per valutare i trade-off e i vari scenari d'uso. Per chi lavora fuori dall'ecosistema GitHub puro o ha esigenze avanzate di policy è spesso la scelta più flessibile.

Il progetto viene rilasciato sotto licenza AGPL-3.0, ha una community molto ampia e vanta rilasci frequenti. Se si vuole eliminare la fatica (e il rischio) dell'aggiornamento manuale delle dipendenze Renovate è un "alleato" che automatizza, standardizza e porta gli update nelle pull request.

Ti consigliamo anche