Dettagli sullo sfondo pertinenti
- Abbiamo due tipi di VM (Utility Box e Web Server) di cui gli sviluppatori hanno bisogno.
- Utilizzeremo git per il controllo della versione.
- Abbiamo sviluppatori che hanno preferenze diverse per il loro ambiente di lavoro (ad esempio alcuni Linux, alcuni Windows).
- Sono nel campo di Linux e credo che Git e Windows non si mischino così come Linux e amp; Idiota. Tuttavia, questo potrebbe essere un pregiudizio personale.
- Usiamo Linux in produzione.
Creazione delle VM di Vagrant per la distribuzione
- Costruisci una scatola base con il sistema operativo pertinente per vagabondi.
- Utilizzo di un Configuration Manager (ad esempio Chef) per creare l'Utility & Immagini Web, convertirle in nuove scatole base. Clonerà le configurazioni di servizio da un repository git centralizzato.
- Distribuisci le scatole base (in realtà solo immagini di macchine virtuali) affinché gli utenti possano svilupparsi localmente con vagabondi. La casella distribuita estrarrà automaticamente il codice sorgente da determinati repository git (ad es. Librerie).
- Se sono previste modifiche per l'ambiente di produzione, tutti gli sviluppatori dovranno abbattere le nuove scatole di base per i vagabondi man mano che vengono preconfezionati. Penso che questo sia il modo più semplice per un nuovo sviluppatore di affrontarlo. La gestione temporanea viene aggiornata per corrispondere alle nuove VM di sviluppo in preparazione.
Flusso di lavoro dello sviluppatore
- Ricevi un problema assegnato dal tracker dei problemi.
- Utilizza la VM vagabonda per clonare il repository dev corrente nella cartella condivisa con il sistema operativo host (in modo che lo sviluppatore possa utilizzare il proprio IDE preferito).
- Lo sviluppatore commette modifiche e test localmente.
- Quando è soddisfatto, lo sviluppatore unisce le sue modifiche al repository dev. In caso di conflitti, collaborare con lo Sviluppatore ha richiesto il codice in conflitto per risolvere il problema.
- Quando Dev si trova in uno stato stabile, Dev viene unito al repository di Staging corrente per il QA delle nuove funzionalità. Nulla viene trasferito da Dev a Staging fino al completamento del Passo 6. Gli hook generano una nuova copia della documentazione per Staging.
- La stadiazione viene clonata in produzione una volta completato il controllo qualità. Gli hook generano una nuova copia della documentazione per Production.
Esistono evidenti difetti / insidie in quanto sopra o passaggi che sono generalmente considerati "migliori pratiche" che dovrebbero essere aggiunti?