2014-05-23 12 views
8

Come installare TeamCity grilletto per iniziare a costruire su cambiamenti git modulo?trigger una build TeamCity sui cambiamenti in un modulo git

Attualmente è necessario aggiornare un puntatore di commit del sottomodulo per attivare una build nel repository principale, in modo che TC registri una modifica nel repository principale.

Aggiornamento

Il problema è il modulo dovrebbe essere sempre inseguendo un maestro ramo. AFAIK questo non può essere raggiunto attraverso git stesso. Vorrei solo che la build superasse la limitazione del git in quella materia.

risposta

1

Non è possibile farlo come TeamCity (e git) non può sapere che è disponibile un aggiornamento. La voce del submodule in un repository punta solo a un commit.

Quale sarebbe un aggiornamento ad esso? Possono esserci più rami e commit da questo commit. Solo tu puoi decidere dove il sottomodulo deve essere aggiornato.

+0

Come su [modulo git inseguimento ultima] (http://stackoverflow.com/questions/9189575/git-submodule-tracking-latest), non è fornire le informazioni ramo? –

1

Sono appena stato a guardare cercando di raggiungere la stessa cosa con TeamCity, ma rapidamente concluso che non ha senso per essere farlo. La build TeamCity deve essere basata su ciò che è nel vostro repository principale, e, come dici tu, il modo in sottomoduli GIT lavoro significa che è fino al repository master per aggiornare è puntatore alla nuova impegnarsi nel sub-repository, che attiverà un accumulo .

Linea di fondo è, non voglio TeamCity costruire qualcosa che non riesco a ricreare dalla fonte, vale a dire la clonazione del repository principale non rifletterà quello TeamCity effettivamente costruito.

+1

Scusa, non stavo chiedendo un'opinione, sto piuttosto cercando di risolvere il problema a portata di mano. –

+1

Abbastanza giusto, ma stavo solo cercando di convalidare l'area problematica. Hai provato a configurare una seconda radice VCS nel sottomodulo e attivarla da quella? Solo un'idea – SteveChapman

+0

Ho lasciato cadere quest'idea, poiché può esserci un solo trigger VCS, ma sinceramente non ho verificato se avere più radici VCS e un trigger può fare il trucco. Ci lavoro su questo. –

2

Questa non è una soluzione chiara, ma raggiunge l'obiettivo di creare un progetto con la punta del sottomodulo e di non dover aggiornare manualmente il sottomodulo. (Un gancio sarebbe probabilmente fare per)

Creazione di una configurazione di generazione separata avanti con il modulo come il repo principale, e l'installazione un passo riga di comando di generazione per clonare un maste-repo, tirare/aggiornamento modulo e spingere il modulo aggiornato puntatore torna al master-repo.

rm -r master-repo 
git clone [email protected]:xxx/master-repo.git 
cd master-repo 
git status 
git submodule update --init 
git config -f .gitmodules submodule.submodule-repo.branch master 
cd submodule-repo 
git pull origin master 
git status 
cd .. 
git add submodule-repo 
git commit -m "sub module update" 
git push origin master 

Sono nuovo di git quindi questo probabilmente può essere ottimizzato.

Problemi correlati