Più di un ramo git deployable

1

Il mio dilemma riguarda il flusso GIT .

Supponiamo che io abbia un'applicazione che può essere distribuita in modo diverso (rilascio di staging, rilascio di QA, rilascio di produzione).

Poiché l'applicazione ha profili da eseguire come versione di staging o come versione di produzione (non dipende da quale ramo è l'eseguibile) con lo stesso binario, penso che sia davvero inutile creare tre diversi rami dispiegabili , ma alcuni colleghi pensano che sia corretto perché abbiamo bisogno di chiarire lo scopo binario.

Ciò che per me è sbagliato è che una volta verificato il ramo staging , devi forzare la distribuzione come staging (è ancora possibile selezionare la versione di produzione). Questo problema non è possibile evitare, quindi penso che i tre rami deployabili non siano utili

Questo è lo stato a cui stanno pensando:

  • branch master: binario + tutti i profili
  • gestione temporanea delle filiali: stesse fonti principali
  • branch qa: stesse sorgenti master

Vogliono solo mantenere le idee ordinate (io non la penso così)

Hanno entrambi ragione?

    
posta Luca D'Alberti 18.01.2016 - 15:02
fonte

1 risposta

2

Distribuisci il ramo di cui hai bisogno dove necessario.

Ora, ovviamente non hai intenzione di distribuire un ramo di funzionalità alla produzione. Tuttavia, la distribuzione dell'ultima build dal master allo sviluppo non dovrebbe essere un problema.

Il ramo di sviluppo in git-flow riguarda il fatto di essere la linea principale - quella da cui il normale processo ti separa e si fonde. L'unica eccezione a questo processo è quella del ramo di aggiornamento rapido in cui è necessario acquisire la corrente dalla produzione.

Vediamo un po 'più questo aggiornamento rapido e consideriamo quale sarebbe il processo di distribuzione quando si hanno tre posizioni. Probabilmente dovresti implementare la nuova hot fix da svuotare, fare alcuni commit su quel ramo e poi distribuirlo a QA e poi a prod.

Per un normale processo di rilascio con git-flow è probabile che si stiano facendo build fuori dal server di sviluppo su development branch. Una volta che si diramano per release , è probabile che il capo del ramo si diriga verso il server di sviluppo (quindi gli sviluppatori che lavorano sullo sforzo di rilascio possono vedere qual è lo stato corrente) e rami specifici taggati che vanno al QA. Una volta che QA esegue uno dei build taggati, il ramo di rilascio di quel tag viene unito in master e quindi master viene taggato e distribuito in produzione.

probabilmente vuoi avere più ambienti per dev. Il capo di release è un ambiente di distribuzione, il capo di development è un altro ambiente di distribuzione e forse anche un capo di feature è un altro uno o cinque.

Dovresti essere in grado di creare qualsiasi ramo per qualsiasi profilo di ambiente di distribuzione. Distribuire la produzione corrente al server dev dovrebbe essere fattibile.

Git-flow stesso è ortogonale al punto in cui distribuisci le cose. Si tratta di fare in modo che i diversi rami dispongano di un insieme limitato e definito di ruoli. Limitando i ruoli rende più facile ragionare su cosa sta facendo ogni ramo e su quale sia il suo stato in un dato momento.

L'unica cosa che git-flow prova a dire su dove vengono implementate specifiche cose è che il capo di master è la produzione. Qualcos'altro su ciò che distribuisci dove nel tuo ambiente è un problema specifico del sito. Git-flow funziona altrettanto bene con una sola produzione e gli sviluppatori che eseguono tutte le altre distribuzioni sui loro server locali come fa per avere produzione, staging, qa, dev e dozzine di feature server.

I passaggi per eseguire una distribuzione su qualsiasi server specifico sono completamente fino al flusso di lavoro locale per quel server.

    
risposta data 18.01.2016 - 16:26
fonte

Leggi altre domande sui tag