Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot

di Matteo Tumiati, in DevOps,

I progetti, sopratutto quelli basati a micro-frontend, stanno venendo via via sempre più sviluppati in monorepo, ossia vengono tutti gestiti all'interno di una sola area di lavoro e, sostanzialmente, sono divisi in cartelle: questo ha tanti vantaggi, come la semplicità di sviluppo quando ci sono tante dipendenze, aiuta nei processi di build e release, e così via.

Se gestisci un monorepo con più directory che condividono dipendenze comuni e hai Dependabot abilitato, c'è il rischio di trovarsi con decine di pull request tutte uguali, ma relative a progetti differenti.
Si può, però, ridurre il numero di pull request per gli aggiornamenti di versione raggruppando gli aggiornamenti per nome della dipendenza tra tutte le directory.

Se vuoi configurare Dependabot per monitorare più directory con il raggruppamento per nome della dipendenza, Dependabot eseguirà le seguenti operazioni:

  • Creerà una singola pull request per ogni aggiornamento di dipendenza che interessa più directory
  • Aggiornerà la stessa dipendenza alla stessa versione in tutte le directory in un'unica operazione
  • Ridurrà il numero di pull request che devi revisionare
  • Minimizzarà i costi di CI/CD, eseguendo i test una sola volta invece che per ogni directory

Vediamo un esempio di configurazione in cui raggruppiamo gli aggiornamenti per nome della dipendenza tra le directory /frontend, /admin-panel e /mobile-app.

version: 2
updates:
  - package-ecosystem: "npm"
    directories:
      - "/frontend"
      - "/admin-panel"
      - "/mobile-app"
    schedule:
      interval: "weekly"
    groups:
      monorepo-dependencies:
        group-by: dependency-name

Se, per esempio, lodash deve essere aggiornato in tutte e tre le directory, Dependabot creerà una singola pull request chiamata "Bump lodash in monorepo-dependencies group" che aggiornerà lodash in tutte e tre le posizioni. Questo è possibile, ma limitato, ai seguenti package manager: bundler, composer, mix, maven, npm, nuget e pip.

Commenti

Visualizza/aggiungi commenti

| Condividi su: LinkedIn, Facebook

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi