Il nostro ciclo di sviluppo/rilascio funziona così:Come posso convincere TeamCity a unire automaticamente un ramo di feature Git con il master e fallire la compilazione in caso di conflitti di unione?
- sviluppatore crea un ramo di caratteristica, implementa una funzione
- sviluppatore indica funzione è pronto per l'accettazione di prova (SVS)
- Tester distribuisce ramo di caratteristica e accetta (o respinge) caratteristica
caratteristiche accettati vengono poi fuse in ramo principale dal tester, e saranno quindi rilasciati nel corso del prossimo rel easy cycle (distribuiamo settimanalmente il tronco/codice principale).
Stiamo avendo frustrazioni con i conflitti di unione, perché quando il tester ha acquisito la funzione UAT e scoperto che non si fonderà in modo pulito, lo sviluppatore che ha lavorato in esso normalmente si è spostato su qualcos'altro.
Stiamo considerando una soluzione in base alla quale ogni ramo di funzionalità viene automaticamente unito, da TeamCity, al ramo master corrente e qualsiasi build risultante in un conflitto di unione viene considerata una build non riuscita: ciò ci darà una visibilità tempestiva sulle fusioni problematiche quindi possiamo risolverli prima.
TeamCity non sembra avere il supporto integrato per questo flusso di lavoro (ad esempio quando un push accade al ramo X, checkout master, unire il ramo X su di esso, creare, unit-test, creare il pacchetto). Qualcuno ha creato un flusso di lavoro simile usando TeamCity e Github - usando obiettivi personalizzati di msbuild, forse?
EDIT: Devo chiarire che stiamo usando Github ma attualmente non stiamo usando richieste di pull - suoni come questo è qualcosa che dovrei investigare. :)
Grande domanda Dylan, sto cercando di risolvere lo stesso problema io stesso. Quando menzioni GitHub nell'ultima frase, intendi invece Git? Perché GitHub implementa già questa funzionalità. Ne approfitto già in progetti open source. –