2015-07-10 23 views
5

Benim gereksinimim, geliştiriciler github'a her itişe geçtiğinde, o zaman itme işleminden önce bir CI yapısı Jenkins sunucusunda tetiklenmelidir. Bu yapı başarısız olursa, o zaman github'a itmek reddedilmelidir. Bunun için kanca yazmam gerekiyor, ancak geliştiriciler tarafından devre dışı bırakılabilecekleri için istemci tarafındaki kancaları yazmak istemiyorum. Sunucu tarafı github webhooks veya ön alma kancaları istiyorum.Github webhooks - ön itmeli kancalar

Şimdi bu mümkün mü? Evet ise, o zaman nerede başlayacak? Rest API hakkında bilgiye ihtiyacım var mı? Kabuk betikleri yazmam gerekiyor mu?

cevap

5

Bu genellikle GitHub ile mümkün olan iş akışı değildir.
Verirsin yerine 2 GitHub repo ile bir "korunan kaydedilmesini" modelini kullanın: (Bir CI hizmeti like, for instance, Travis (veya your own CI server) etkinleştirebilirsiniz nerede, itmek için

  • biri geçerli kaydedilmesini için
  • biri olanları Travis (as in this question) tarafından itilir ve repo senkronize etmek için geliştirici tarafından kullanılan geçmiş CI),(), sadece

th bir itme çekme gereklilik Bu durumda

değiştirilemez projemde, bunun için var de O hangi Building a CI server takip etmek en iyisi:

  • bir derleme iter algılamak ve tetiklemek
  • geçerli comimt için ayrılmış şubeye geri dönün (örneğin ana dal olabilir)

Bu, devlerin yalnızca sunucunuz tarafından izlenen bir "dev" dalına ve CI engininize basması gerektiği anlamına gelir Derleme geçerse, bu taahhütleri ana bölüme zorlar.

+0

İş akışımın yaygın olarak kullanılmadığını kabul ediyorum, ancak gereksinim, projem için değiştirilemez. Yani, sadece webhooks çözümünün mümkün olup olmadığını bilmek istedim. –

+0

@GaurangaRathod sonra genel fikir aynı kalır, sadece bir GitHub repo ile ama iki dal: Ben de buna göre cevabımı düzenledim. – VonC

+0

İş akışımı tekrar değiştiriyorsunuz. Github web kitaplarını kullanmalıyım ve buna resme ihtiyacım var. –

1

Bazı araştırmalardan sonra, jithis'in web maskelerini kullanarak jenkins yapısını tetiklemenin mümkün olduğunu buldum, ancak jenkins 'yapısının başarısız olması durumunda github push talebini reddetmek mümkün değil. Dolayısıyla, temel olarak, github'un serbest github hesabında olmayan itme gücünü kontrol edemeyiz.

Eğer yanılıyorsam, biri beni düzeltiyor.

+0

Bu yüzden cevabımda farklı bir iş akışı önerdim: Gitme GitHub'da yapıldığında (ve bir web kancasını tetiklediğinde), GitHub'daki itmeyi gerçekten "reddedemezsiniz". – VonC

+0

@VonC Farklı iş akışı kesinlikle daha iyi bir çözümdür, ancak Github kuruluşu veya github'un özel deposunu reddetmenin mümkün olup olmadığını biliyor musunuz? –

+0

Evet, Git repos sunucusu sunucusunu denetlerseniz, (ilke yerine) kanca ekleyebilirsiniz, bu da bir ilkenin uygulanmaması durumunda bir itmeyi reddedebileceğiniz anlamına gelir. – VonC