GitHub deposunda Jenkins'in şu anki durumunu göster


182

Projemin GitHub Readme.md dosyasında Jenkins derleme durumunu göstermenin bir yolu var mı?

Jenkins sürekli entegrasyon yapılarını çalıştırmak için kullanıyorum. Her taahhütten sonra, nihayet dokümantasyon ve yayın paketleri üretmeden önce her şeyin derlenmesini ve birim ve entegrasyon testlerini yürütmesini sağlar.

Hala yapıyı bozan bir şeyi yanlışlıkla yapma riski vardır. GitHub proje sayfasını ziyaret eden kullanıcıların geçerli master'ın bu durumda olduğunu bilmesi iyi olur.


9
Bu neden düşük oylandı? Jenkins kullanıcı kılavuzunda kaçırdığım bir şey var mı? Önceden google yaptım ve hiçbir şey bulamadım.
Jasper Blues

1
Travis yapı sunucusu böyle bir şey yapabilir, ancak Osx üzerinde Jenkins kullanıyorum. İşte benim peşimde
Jasper Blues


2
Benzer soruya bağlantı şu anda iOS ve OSX'i desteklemeyen Travis'i önermektedir, bu nedenle soruyu cevaplamamaktadır.
Jasper Blues

4
Bu bir kopya değil .. travis! = Jenkins
Banjocat

Yanıtlar:


167

Tamam, Jenkins'i GitHub derleme durumlarını ayarlayacak şekilde ayarlayabilirsiniz. Bu, Jenkins'e her basışta derlemeler yapmak üzere yapılandırılmış GitHub eklentisi bulunduğunu varsayar.

  1. GitHub'a gidin, giriş yapın, Ayarlar'a gidin , Kişisel erişim belirteçleri , Yeni belirteç oluştur'a tıklayın .

    GitHub ayarlarının ekran görüntüsü

  2. Repo: durumu kontrol edin (bunun gerekli olduğundan emin değilim, ama yaptım ve benim için çalıştı).

    GitHub token generation'in ekran görüntüsü

  3. Simgeyi oluşturun, kopyalayın.

  4. Kullanacağınız GitHub kullanıcısının bir depo ortak çalışanı (özel depolar için) olduğundan veya oluşturmak istediğiniz depolara push ve pull erişimine (kuruluş depoları için) sahip bir ekibin üyesi olduğundan emin olun.

  5. Jenkins sunucunuza gidin, giriş yapın.

  6. Jenkins'i YönetinSistemi Yapılandır
  7. GitHub Web Hook altında Jenkins'in kanca URL'lerini otomatik olarak yönetmesine izin ver'i seçin , ardından GitHub kullanıcı adınızı ve 3. adımda aldığınız OAuth jetonunu belirtin .

    Jenkins global ayarlarının ekran görüntüsü

  8. Kimlik Bilgilerini Test Et düğmesiyle çalıştığını doğrulayın . Ayarları kaydedin .

  9. Jenkins işini bulun ve yapım sonrası adımlara GitHub taahhüdünde Yapı durumunu ayarla'yı ekleyin

    Jenkins iş yapılandırmasının ekran görüntüsü

Bu kadar. Şimdi bir test derlemesi yapın ve çalışıp çalışmadığını görmek için GitHub deposuna gidin. Tıklayın Şube inşa durumları görmek için ana depo sayfasında.

'dallar'ı tıkladığınız ana sayfanın sceenshot'ı

Yeşil onay işaretlerini görmelisiniz:

Derleme durumuna sahip GitHub dallarının ekran görüntüsü


GitHub yetkilendirme iş akışını şimdi güncelledi, kullanıcılar artık neye izin verileceğini belirtmiyor, bunun yerine uygulamalar yetkilendirme sırasında istediklerini istemeli ve kullanıcı istenen izinleri onaylamalıdır.
Ian Vaughan

6
Bu Jenkins> 1.609 ve Github eklentisi v 1.13.3 ile çalışmıyor gibi görünüyor - "Jenkins kanca kancalarını otomatik olarak
yönetelim

2
@Pyeleven ile hemfikirim. Github Plugin 1.16.0 ve Github API Plugin 1.71 ile Jenkins LTS 1.625.3 kullanıyorum. Bu seçenek görünmüyor. Bunun yerine, kimlik bilgileri için bir açılır liste görüyorum, ancak kimlik bilgileri listelenmedi (ayarlanmış kimlik bilgilerim olmasına rağmen). Bu kimlik bilgileri Gelişmiş-> Ek Github Eylemlerini Yönet -> Kullanıcı Adını ve Parolayı Github jetonuna Dönüştür'e giderken görünür.
shehzan

4
Bu güncel değil; bu cevabın
bahsi geçen

1
Şimdi post-inşa adımı parametreleri değiştirildi. @Alex'in cevabı doğru.
Bibek Mantree

51

Bu arada Jenkins ve GitHub'ın kullanıcı arayüzü biraz değişti ve Jenkins'in şimdi doğru bir şekilde nasıl yapılandırılacağını anlamak biraz zaman aldı. Buradaki açıklama Jenkins 2.121.1 versiyonunu temel almaktadır.

Ayrıca Jenkins Job'unuzu bir webhook veya yoklama tarafından tetiklenecek şekilde yapılandırdığınızı da varsayıyorum. Çalıştırmak için attığım adımlar şunlardır:

  1. Github'ı Yapılandırma: OAuth Scope ile Kişisel Erişim Jetonu Oluşturun repo:status
  2. Jenkins'i yapılandırın: Configure Systemve OAuth Secret'ı GitHub Sunucusu olarak ekleyin - Secret TextOAuth Secret'ı oraya koymak için bir kimlik doğrulama yöntemi olarak kullanın .
  3. Jenkins Job'unuzu yapılandırın: Derleme sonrası eylemiSet GitHub commit status olarak ekleyin . Durum Sonucunu olarak ayarlayın .One of the default messages and statuses
  4. GitHub'daki sonucunuzu kontrol edin: GitHub taahhüdünüzde derleme durumunu ve derleme yürütme süresini alıp almadığınızı kontrol edin.

Github'ı Yapılandır

Kişisel Erişim Jetonu Oluşturun


resim açıklamasını buraya girin


resim açıklamasını buraya girin


resim açıklamasını buraya girin


Jenkins'i Yapılandırma

resim açıklamasını buraya girin


resim açıklamasını buraya girin


resim açıklamasını buraya girin


resim açıklamasını buraya girin


resim açıklamasını buraya girin


Jenkins Job'u Yapılandırma

resim açıklamasını buraya girin


resim açıklamasını buraya girin


resim açıklamasını buraya girin


Sonuç

Artık taahhütlerinizin ve şubelerinizin durumunu göreceksiniz:

resim açıklamasını buraya girin


2
Wow sonunda bir çözüm buldu, çok teşekkürler! Bu "Gizli metin" kafamı karıştırdı.
head01

Jenkins durumları zorluyor gibi gözüküyor, ancak özel repolarım bunlardan vazgeçmiyor. Baska öneri?
Patrick Michaelsen

Güncelleme: Sorunum repo'mun gizliliğiyle ilgiliydi. Kimlik bilgileri kurulumumla ilgili bir sorunum olmalı.
Patrick Michaelsen

Güncelleme: sonuçta bu sadece gerçek bir git itme tarafından tetiklendi eğer işe yaradı keşfetti. Derlemeyi kendiniz çalıştırmak durum güncellemesini doğru şekilde tetiklemez.
Patrick Michaelsen

1
Manage HooksKurtardığımız zaman unticked olmalıdır kutu vurgulanan ama Yukarıdaki resimlerde işaretli olmadığından emin ortalama gelir?
Perplexabot

37

Yaptığım şey oldukça basit:

  1. Hudson Post Görev Eklentisini Yükleme
  2. Burada bir Kişisel Erişim Jetonu oluşturun: https://github.com/settings/tokens
  3. Her zaman başarılı olan bir Görev Görevi Eklentisi ekleyin

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"success\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build has succeeded!\"
    }"
    
  4. "Derleme hata olarak işaretlendi" durumunda başarısızlık verecek bir Görev Görevi Eklentisi ekleyin

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"failure\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build has failed!\"
    }"
    
  5. Testlerin başında bekleyen bir çağrı da ekleyebilirsiniz

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"pending\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build is pending!\"
    }"
    

Derleme sonrası görev yapılandırmasının ekran görüntüsü


Bunu Pipeline'dan da yapabilirsiniz - örneğin, sadece arayabilir shve hatta Jenkins kimlik bilgileri deposundan yararlanabilirsinizwithCredentials
Ivan Kolmychek

Teamcity için şunları kullanabilirsiniz: confluence.jetbrains.com/display/TCD10/Commit+Status+Yayıncı
Natim


11

İşlem Durumu API'sı " Repo Durumları API'sını " görmenizi sağlar .

Ve 26 Nisan 2013'ten bu yana , GitHub repo şube sayfanızda derleme durumunu görebilirsiniz :

GitHub repo dallarında durum oluşturma

Bu, GitHub proje sayfasını ziyaret ederek, yalnızca Jenkins'e sahip olmak yerine bu durumları görmenin başka bir yolu olduğu anlamına gelir.

30 Nisan 2013'ten itibaren, taahhüt durumları için API bitiş noktası, şube ve etiket adlarının yanı sıra taahhüt SHA'larına da izin verecek şekilde genişletildi .


URL'leri nereye vuracağım? Bir eklenti var mı veya bir derleme adımda bukleler kullanıcı var mı?
Ian Vaughan

@IanVaughan "vurmak" ne demek? Neyi görmek için? Bir durumu görmek için curl( developer.github.com/v3/repos/statuses/… )
VonC

Üzgünüz, evet, kıvrımın kullanılabileceğini biliyordum ve API arayüzünü biliyordum, kıvrımı nereye koyacağımı daha fazla biliyordum ve kıvrımdan daha yüksek bir soyutlama mevcut değilse? Yani inşa / PR inşa ve sonra bir sonra devlet belirtmek için başlamadan önce bir kıvırmak POST ekleyebilirsiniz, ama bu çok düşük seviye gibi görünüyor ve benim için bu şeyler yapmak için üst düzey bir eklenti olduğunu umuyordu.
Ian Vaughan

O zamandan beri kullanım durumum için oldukça ağır olan Janky'yi buldum, istediğimi yapıyorum.
Ian Vaughan


7

Bilgisayarınızda Githubyüklü bir eklenti varsa Jenkins, bunu şu şekilde yapabilirsiniz Post build actions:

github'da derleme durumunu ayarlama



4
Bu yanıtın ayrıntıları yok: GitHub eklentisinin derleme durumunu ayarlamak için gerekli API'ları kullanmasına izin vermek için GitHub'da nasıl OAuth erişim belirteci oluşturabilirim? Bu jeton için ne gibi izinler gerekiyor? Jenkins yapılandırmasında nerede kullanıcı adını / simgesini belirtebilirim?
Marius Gedminas

2
Bu gerçekten yararlı değil, bu iletişim penceresine nasıl ulaşırsınız?
Oz123

5

README.md'inize aşağıdaki satırı ekleyin ve her iki URL'yi de jenkins projenize göre değiştirin.

[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)

Grafik otomatik olarak yüklendi mi? Görünüşe göre benim için değil ...
HX_unbanned

Evet, çalışmaz. Sayfanızı yenilemeniz gerekiyor.
Kaushal

3

Jenkins ve GitHub'ın korumalı şubesinin kurulmasıyla ilgili. Jenkins 2.6 kullanıyorum ve bunlar bunu yapmak için yaptığım adımlar:

Deponuzun GitHub web sayfasında:

  1. Ayarlar> Dallar'a gidin.
  2. Dalları koru'nun altında, Aşağı açılan dal seç menüsünü tıklayın ve Korumalı dal olarak ayarlamak istediğiniz dalı seçin.
  3. Seçenekleri gerektiği gibi etkinleştirin.

Jenkins Sunucusunda: (Git ve GitHub Eklentisinin kurulu olduğundan emin olun)

  1. Jenkins'i Yönet> Sistemi Yapılandır'a gidin.
  2. GitHub altında, API URL'sini https://api.github.com olarak ayarlayın . Bu varsayılan değer olsa da.
  3. Kimlik Bilgileri için oluşturulan simgenizi seçin. Henüz bir jeton oluşturmadıysanız, Gelişmiş ... 'e tıklayın, ardından Ek eylemler'de, giriş ve şifrenizi jetona dönüştürebilir ve kimlik bilgileriniz olarak kullanabilirsiniz.

Ayrıca, Jenkins'inizin kullandığı GitHub hesabının depo için bir ortak çalışan olduğundan emin olun. Yazma izni seviyesiyle ayarladım.

Bu yardımcı olur umarım.




1

Düzenle:

Artık bu yaklaşımı kullanmıyorum, lütfen diğer cevaplardan birini kullanın.

Güncelleme: özel durumumuz için ne yaptım? (Yukarıdaki cevaplar harikaydı - teşekkürler!)

Derleme sunucumuz internette olmadığından derleme durumunu github'daki gh-pages dalına yayınlayacak bir komut dosyamız var.

  • İnşa damgası başarısız
  • Yapı pullarının başarısı
  • Proje ana proje sonrasında sonuçları yayınlamak için çalışır -> yapı durumu, API belgeleri, test raporları ve test kapsamı.

GitHub görüntüleri önbelleğe alır, bu nedenle derleme durumu görüntüsü için kısa bir önbellek zaman aşımı talimatı veren .htaccess dosyası oluşturduk.

Bunu build-status görüntüsüyle dizine koyun:

ExpiresByType image/png "access plus 2 minutes"

İşte derleme betiği. Gh -sayfalarına yayın yapan hedef '--publish.site.dry.run'

400'den az yapılandırma satırı ile:

  • Çekleri derleyin
  • birim ve entegrasyon testleri
  • Test raporları
  • Kod Kapsamı Raporları
  • API Dokümanları
  • Github'da Yayınlama

. . ve bu komut dosyası Jenkins'in içinde veya dışında çalıştırılabilir, böylece:

  • Geliştiriciler bu komut dosyasını yürütmeden önce çalıştırarak başkalarını etkileyen kırık bir yapının olasılığını azaltır.
  • Bir arızanın yerel olarak çoğaltılması kolaydır.

Sonuçlar:

Proje ana sayfası , en son API Dokümanları, test sonuçları ve test kapsamı ile birlikte her derlemeden sonra güncellenen derleme durumuna sahiptir.


Harika geri bildirim, cevabımdan daha hassas. +1
VonC

1
Komut dosyası bağlantısı öldü
Saikat

Senaryonuz için canlı bir bağ var mı?
Ian

Bu yaklaşımı kullanmayı bıraktım - diğer cevapların daha iyi olacağını düşünüyorum.
Jasper Blues
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.