2015-07-10 13 views
5

Il mio requisito è che ogni volta che gli sviluppatori spingono a github, prima del push una build CI deve attivarsi sul server Jenkins. Se quella build fallisce, allora push to github dovrebbe essere rifiutato. Ho bisogno di scrivere ganci per questo, ma non voglio scrivere ganci lato client in quanto possono essere disabilitati dagli sviluppatori. Voglio i webhook github sul lato server o gli hook di pre-ricezione.Github webhooks - ganci pre-push

Ora è possibile raggiungere questo obiettivo? Se sì, allora da dove cominciare? Ho bisogno di conoscere l'API Rest? Devo scrivere script di shell?

risposta

5

Questo non è generalmente il flusso di lavoro possibile con GitHub.
si preferisce utilizzare un modello "commit custoditi" con 2 GitHub repo:


° a ciò che il requisito è per il mio progetto, che non può essere cambiata

In questo caso, è meglio seguire Building a CI server che sarà:

  • rilevare le spinte e innescare una raccolta
  • spingere indietro sul ramo dedicato per un controllo valido (ad esempio potrebbe essere il ramo master)

Ciò significa che gli sviluppatori devono inviare solo un ramo "dev", monitorato dal server, e il proprio CI engin e spingerebbe quei commit al ramo master se la compilazione passa.

+0

Sono d'accordo che il mio flusso di lavoro non è comunemente usato, ma è quello che è il requisito per il mio progetto, che non può essere modificato. Quindi, volevo solo sapere se la soluzione dei webhook è persino fattibile. –

+0

@GaurangaRathod quindi l'idea generale rimane la stessa, con un solo repository GitHub ma due rami: ho modificato la mia risposta di conseguenza. – VonC

+0

Stai cambiando il mio flusso di lavoro. Devo usare i webhook di Github e ne ho bisogno nella foto. –

1

Dopo alcune ricerche, ho scoperto che è possibile attivare la build di jenkins utilizzando i webhook di github, ma non è possibile rifiutare la richiesta push di github se la build di jenkins non riesce. Quindi, fondamentalmente, non possiamo controllare la spinta del github, almeno non nel conto github gratuito.

Se sbaglio, qualcuno mi corregge.

+0

Ecco perché ho proposto un flusso di lavoro diverso nella mia risposta: una volta che la spinta viene eseguita su GitHub (e attiva un webhook), non si può davvero "rifiutare" la spinta su GitHub. – VonC

+0

@VonC Un flusso di lavoro diverso è sicuramente una soluzione migliore, ma sai se è possibile rifiutare il push su Github enterprise o sul repository privato di github? –

+0

Sì, se controlli il server di hosting Git repos, puoi aggiungere ganci (invece di webhook), il che significa che puoi rifiutare un push se una politica non viene applicata. – VonC