" Yoklama ölmeli: Jenkins derlemelerini bir git kancasından tetikleme " bölümünde belirtildiği gibi , Jenkins'e yeni bir kesinleştirme konusunda bildirimde bulunabilirsiniz:
En son Git eklentisi 1.1.14 ile (şimdi yayınladığım), artık bunu daha> kolay bir şekilde aşağıdaki komutu çalıştırarak yapabilirsiniz:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>
Bu, belirtilen URL'yi kontrol etmek için yapılandırılmış tüm işleri tarayacak ve bunlar da yoklama ile yapılandırılmışsa, yoklamayı hemen tetikleyecektir (ve bu, bir derlemeye değer bir değişiklik bulursa, sırayla bir yapı tetiklenecektir. )
Bu, bir komut dosyasının, Jenkins'te işler gelip gittiğinde aynı kalmasını sağlar.
Veya tek bir depo ana bilgisayar uygulaması altında birden fazla deponuz varsa (Gitosis gibi), tüm depolarla tek bir alma sonrası kanca komut dosyasını paylaşabilirsiniz. Son olarak, bu URL, güvenli Jenkins için bile kimlik doğrulaması gerektirmez, çünkü sunucu, istemcinin gönderdiği hiçbir şeyi doğrudan kullanmaz. Bir derlemeye başlamadan önce bir değişiklik olduğunu doğrulamak için yoklamayı çalıştırır.
Burada belirtildiği gibi , Jenkins sunucunuz için doğru adresi kullandığınızdan emin olun:
Jenkins'i 8080 numaralı bağlantı noktasında bağımsız bir Web sunucusu olarak çalıştırdığımız için, URL şu şekilde olmamalıydı /jenkins
:
http://jenkins:8080/git/notifyCommit?url=git@gitserver:tools/common.git
Bu son noktayı güçlendirmek için, ptha yorumlara şunları ekliyor :
Açık olabilir, ancak şu konularla ilgili sorunlarım vardı:
curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>.
Url parametresi ne var tam olarak uymalıdır Depo adresten sizin Jenkins işin.
Örnekleri kopyalarken, bizim durumumuzda protokolü dışarıda bıraktım ssh://
ve işe yaramadı.
Ayrıca basit kullanabilirsiniz "gibi kanca yazı-alacak temelli Basmalı Jenkins ve GIT kullanarak oluşturur "
#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \
http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx
Jenkins işinizi "Derlemeleri uzaktan tetikleyebilecek" şekilde yapılandırın ve bir kimlik doğrulama belirteci kullanın ( 1qaz2wsx
bu örnekte).
Ancak, bu projeye özgü bir senaryodur ve yazar bunu genellemenin bir yolundan bahseder.
İlk çözüm, kimlik doğrulamasına veya belirli bir projeye bağlı olmadığı için daha kolaydır.
Derlemenin başlaması gereken en az bir java dosyası olup olmadığını kontrol etmek istiyorum.
Geliştiricilerin yalnızca XML dosyalarını veya özellik dosyalarını değiştirdiğini, ardından derlemenin başlamaması gerektiğini varsayalım.
Temel olarak, derleme komut dosyanız şunları yapabilir:
git notes
ilk görüşmeye bir 'inşa' notları (bakınız ) koyun
- sonraki çağrılarda arasındaki kaydedilmesini listesini kapmak
HEAD
yapı için şube adayın tarafından başvurulan kesinleştirme git notes
'yapı' ( git show refs/notes/build
): git diff --name-only SHA_build HEAD
.
- betiğiniz bu listeyi ayrıştırabilir ve derlemeye devam etmesi gerekip gerekmediğine karar verebilir.
- her durumda,
git notes
' build
' öğenizi oluşturun / taşıyın HEAD
.
May 2016: cwhsu Puan yorumlarda aşağıdaki olası url:
yalnızca curl --user USER:PWD http://JENKINS_SERVER/job/JOB_NAME/build?token=YOUR_TOKEN
öğenizde tetikleyici yapılandırması ayarlarsanız kullanabilirsiniz
Haziran 2016, polaretto işaret yorumlarda :
Eklemek istedim, sadece biraz kabuk komut dosyası yazarak, özellikle ortak bir dizin altında çok sayıda deponuz varsa, manuel url yapılandırmasından kaçınabilirsiniz.
Örneğin repo adını almak için bu parametre genişletmelerini kullandım.
repository=${PWD%/hooks};
repository=${repository##*/}
ve sonra şu şekilde kullanın:
curl $JENKINS_URL/git/notifyCommit?url=$GIT_URL/$repository