SORU
9 EKİM 2012, Salı


Yapılandırma sonrası commit kanca Gıt

Jenkins yeni duyuyorum. Nasıl bir tetikleyici uzaktan Jenkins için inşa?
Kimseye yapılandırma sonrası commit kanca Gıt nasıl söyleyebilir?

Benim gereksinimi değişiklikleri Git depo olarak yapıldığında otomatik olarak Jenkins inşa projesi için başlar belirli bir proje için.

Jenkins tetik yapı bölümü tetikleyici uzaktan inşa seçtim.
Dosya kaydetme sonrası yapılandırma var o .git dizin hooks dizininde.
Oradan bir yapı (komut curl kullanmalıyız bazı kısmı biliyorum) tetiklemek için nasıl bir çıkarımda bulundum.


curl cmbuild.aln.com/jenkins/view/project name/job/myproject/buildwithparameters?Branch=feat-con

Git server hooks dizini (post commit hook) bu komut yerleştirdim.
Değişiklikleri deposunda meydana ne zaman otomatikleştirme inşa çalışıyor.

En az bir java dosyası oluşturmak başlamalıdır orada değişiklik olup olmadığını kontrol etmek istiyorum.
Geliştiriciler xml dosyaları veya maddi dosyaları tek yapı başlamalı değişmemiş sanırım.
xml, sanırım birlikte .java dosyaları oluşturmak başlayacaktır.

CEVAP
9 EKİM 2012, Salı


"Polling must die: triggering Jenkins builds from a git hook", bildirebilirsiniz, yeni Jenkins tamamlama: . belirtildiği gibi

En son Git plugin 1.1.14 hemen serbest (), şimdi daha ^ bunu yapabilirsiniz . kolayca sadece aşağıdaki komutu yürütmeden:

curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>

Bu tarama tüm işleri yapılandırılmış kontrol etmek için belirtilen URL, ve eğer onlar da yapılandırılmış yoklama, hemen tetiği yoklama (ve eğer o bulur bir değişiklik değer bir yapı, bir yapı olacak tetikledi.)

Bu senaryo işler geldiği zaman aynı kalır ve Jenkins gitmek için izin verir.
Ya eğer tek bir depo ana uygulama altında birden çok depoları varsa (Gitosis gibi), tüm depoları ile post-receive hook tek bir komut paylaşabilirsiniz. Son olarak, bu URL, sunucu doğrudan istemci gönderen bir şey kullanmaz çünkü daha güvenli Jenkins için kimlik doğrulaması gerektirmez. Aslında inşa başlamadan önce yoklama bir değişiklik olmadığını doğrulamak için çalışır.

mentioned here, emin Jenkins sunucunuz için doğru adres kullanmak için yapmak gibi

port 8080 üzerinde bağımsız bir Web Sunucusu olarak Jenkins işletiyoruz URL böyle /jenkins olmadan olmalıydı:

http://jenkins:8080/git/notifyCommit?url=git@gitserver:tools/common.git

Bunu güçlendirmek için son nokta, ptha ekler in the comments:

Açık olabilir, ama sorunları vardı:

curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>. 

urlparametre var tam olarak aynı olmalıdırDepo URLJenkins senin işin.
Kopyalama örnekler protokolü dışarı çıktığında, bizim durumumuzda ssh://, ve işe yaramadı.


Ayrıca basit bir post-alma gibi kanca kullanabilirsiniz "Push based builds using Jenkins and GIT"

#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \

http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx

Yapılandırma Uzaktan” ve bir kimlik doğrulama belirteci (1qaz2wsx Bu örnekte) oluşturur. “Tetiklemek için güçlü olmak Jenkins işini

Ancak, bu projeye özel bir senaryo yazarı ve genelleme bir şekilde bahseder.
İlk çözüm kimlik doğrulama veya belirli bir projeye bağlı değil olarak daha kolaydır.


Değişiklik en az bir java dosyası oluşturma başlamak gerektiğini belirlemek kontrol etmek istiyorum.
Geliştiriciler XML dosyaları veya dosyaları tek özellik, daha sonra inşa başlamalıdır değişmemiş sanırım.

Temel olarak, komut dosyası inşa EDEBİLİR MİSİN:

  • bir ilk çağrı üzerine notlar (git notes). inşa koy
  • üzerinde sonraki aramalar, kapmak listenin tamamlar arası HEAD şube aday için inşa ve taahhüt tarafından başvurulan git notes 'inşa' (git show refs/notes/build): git diff --name-only SHA_build HEAD.
  • senaryonu bu liste ayrıştırmak ve inşa eğer devam etmek gerekiyorsa karar verebilirsiniz.
  • herhangi bir durumda, kendi oluşturmak git notes 'build' 23**./

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006