2010-09-13 12 views
6

Sto cercando di capire come scrivere un hook di pre-commit per Git che controlla lo stato della mia build Hudson. Se la build precedente non è riuscita, non consentire a nessuno di eseguire il commit senza prima scrivere una riga specifica, ad es. "build fissa".Hook pre-commit per Git quando la build di Hudson non è riuscita

EDIT:

La prima risposto ha fornito un lato della medaglia: l'API Hudson.

Ora ho bisogno dell'altro lato. Come si scrive il gancio di pre-commit in Git?

+0

Solo pensando a un caso d'uso interessante. Supponiamo che Hudson fallisca. Due sviluppatori stanno lavorando sul codice, uno sulla correzione e il secondo sulla funzione successiva. Nel tuo caso lo sviluppatore della correzione deve prima controllare il codice. Il secondo sviluppatore deve attendere fino alla ricostruzione di Hudson. Non sono sicuro che questo potrebbe essere un problema per te (dipende molto dai tempi di costruzione). Secondo me si sta meglio, dando al capo del progetto un monitor, che mostra sempre lo stato di build più recente. Diventerà attivo se la build è rotta per un lungo periodo di tempo. –

+0

I tempi di costruzione al momento sono molto bassi (dell'ordine di alcuni minuti), quindi non dovrebbe essere un problema ... ancora. –

+0

Solo un commento (non so se può essere applicato alla tua situazione): vedi anche http://stackoverflow.com/questions/3209208/questo-è-il-verestione-di-del-fonte-del-soggetto-del-testo -have-mai-visto/3209767 # 3209767 – VonC

risposta

2

Come menzionato in questo blog post, Hudson ha un'API individuabile, tramite il suo Remote Access API.

http://myhudson.example.com/job/MyJob/api 

Utilizzando una combinazione di:

  • wget (disponibile su Unix o Windows)
  • parsing

è possibile estrarre lo stato della build più recente.

+1

Molto bello è il supporto di Hudson per XPath. L'ho usato per interrogare i nomi degli artefatti per scaricare artefatti specifici in un secondo passaggio. Nel tuo caso una singola chiamata wget dovrebbe darti le giuste informazioni. –

+0

Grazie per questo. Ho modificato la mia domanda per riflettere ora che sto solo cercando come scrivere l'hook pre-commit in 'Git' ora. Sentiti libero di modificare la tua risposta. –