Applicare lo sviluppo basato su trunk

Completato

Con gli script di training e le definizioni dei processi nel controllo del codice sorgente, la sfida successiva consiste nel proteggerli. Due data scientist che modificano lo stesso file nel main ramo contemporaneamente possono creare conflitti e, soprattutto, interruzioni accidentali nel codice da cui dipendono altri utenti. Lo sviluppo basato su trunk offre al team un modo strutturato per evolvere il modello mantenendo stabile il codice di produzione.

Mantenere stabile il ramo condiviso

Nello sviluppo basato sul trunk, i contributori integrano le modifiche in un unico ramo condiviso, tipicamente main. I team mantengono integro questo ramo in modo che rimanga un punto di partenza affidabile per il nuovo lavoro.

Per il progetto Proseware, il team richiede che le modifiche raggiungano main tramite pull request. Questo criterio offre ai revisori e ai controlli automatizzati la possibilità di valutare ogni modifica prima dell'integrazione.

Rami di funzionalità di breve durata

Quando un data scientist vuole sperimentare una nuova funzionalità, ad esempio aggiungendo una variabile BMI al modello diabetes, crea un ramo di breve durata da main. Il lavoro avviene lì, isolato dal codice di tutti gli altri. Quando l'esperimento è pronto per la revisione, il data scientist apre una richiesta pull.

I rami di breve durata riducono la possibilità di divergere lontano da main, che rende più semplice l'unione e i conflitti più piccoli.

Richieste pull, revisioni e controlli obbligatori

Una richiesta pull esegue due operazioni: mostra i revisori esattamente cosa è cambiato e diventa il punto di attivazione per i controlli automatizzati. I revisori possono porre domande, richiedere modifiche o approvare il lavoro. L'automazione viene eseguita in parallelo con la revisione.

Le regole di protezione dei rami o i set di regole possono applicare questo processo. A seconda delle impostazioni del repository, una regola su main può:

  • Limitare i push diretti
  • Richiedere un numero minimo di approvazioni prima dell'unione
  • Richiedere controlli di stato specifici da passare prima dell'unione

GitHub Actions i flussi di lavoro possono produrre i controlli richiesti da una regola. Questi controlli vengono esaminati nell'unità successiva.

Nota

Le regole di protezione dei branch e i set di regole sono impostazioni del repository di GitHub, non GitHub Actions. Il flusso di lavoro definisce cosa viene eseguito. La regola di protezione decide se un'unione è consentita in base al risultato.

Tip

Prendere in considerazione una modifica del modello che richiede diverse settimane di lavoro. Come si potrebbe suddividerlo in modifiche più piccole che vengono integrate in main senza lasciare un ramo di lunga durata?