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
"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 durumumuzdassh://
, 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şvurulangit 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**./
Ortak / faydalı SVN pre-commit kanca...
Atla Git commit kanca...
Ve jUnit 4 yürütme kanca Suite öncesi ...
Git remote/paylaşılan pre-commit kanca...
Git commit github için bastırıyor başa...