Domanda

Il plugin git per Hudson funziona bene.Tuttavia, lo script di build deve aggiornare un numero di versione nei file nel repository, eseguire il commit e il pushback nel repository.

Quando Hudson esegue il polling per verificare le modifiche, entra in un ciclo infinito perché vede che il commit come "modifica" si ricostruisce di nuovo, che conferma una modifica, quindi si ricostruisce di nuovo, quindi esegue il commit di un'altra modifica, ecc...Hai capito.

L'ho interrotto, ho eseguito un "log git" in ciascun repository e ho confrontato gli ultimi ID di commit sono esattamente gli stessi utilizzando git ls-tree HEAD

Inoltre, Hudson esegue questo comando per verificare le modifiche:

git fetch +refs/heads/:rif/telecomandi/origine/git ls-tree HEAD

Dato che lo stesso Hudson ha inviato il commit dal suo repository dell'area di lavoro e apparentemente i risultati di ls-tree corrispondono, come può questo comando determinare che c'è stata una modifica?

Sembra che debba memorizzare i risultati di ls-tree prima di eseguire la compilazione e confrontarli con quello che non avrà l'ultimo commit.Ah.Posso provare a disattivare il commit per testare quella teoria.

Ad ogni modo, invece di risolvere eventuali problemi nel plugin git per Hudson, cosa posso fare per assicurarmi alla fine della mia build che i repository siano identici e che Hudson lo veda così.

Come risolvere questo problema?Qualche idea?

Wayne

È stato utile?

Soluzione 2

E la risposta è!...

Il plugin Git Hudson è già stato biforcato da qualcuno per aggiungere questa funzionalità e funziona bene.Tuttavia, ho dovuto eliminare la fonte e risolvere un paio di problemi minori.

Ora funziona magnificamente.La build viene confermata e il plugin Git ritorna al repository senza loop, pensando che sia cambiato di nuovo.

Meraviglioso!

Se qualcun altro ha bisogno di questo, cerca il fork tickzoom del plug-in Hudson-GIT su Github.com, ma controlla se è già stato integrato nel progetto principale.Il committente ha detto che era interessato e che stava progettando di combinare le forcelle.

Wayne

Altri suggerimenti

Il tuo sistema di compilazione non dovrebbe avere alcuna interazione di scrittura con il tuo sistema di controllo di revisione.Certamente non dovrebbe spingere tali modifiche vengono apportate automaticamente.

Il tuo sistema di build potrebbe chiedere git (via git describe, ad esempio) qual è la revisione attuale.Tutto il resto è ridondante e soggetto a errori.

Un'altra cosa che potresti considerare è non effettuare sondaggi per i cambiamenti.Sembra un modo stupido di operare.(Certo, sono un utente pesante di buildbot abbastanza abituato a far sì che tutto venga attivato in base agli eventi.)

Il repository git sottoposto a polling sa quando cambia.Dovrebbe semplicemente dire al sistema CI di avviare immediatamente una build in base a ciò.Ottieni le tue build prima e poiché sono tutte attivate, non hai i tuoi computer seduti a fare molto lavoro senza una buona ragione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top