Jenkins CI v.1.555, Git Client eklentisi v.1.6.4 ve Git eklentisi 2.0.4 kullanarak bu cevapların hiçbiri benim için yeterli değildi.
Belirli, sabit (yani parametreleştirilmemiş) bir etiket için bir Git deposu için bir iş oluşturmak istedim. Çeşitli yanıtlardan bir çözümü ve Thilo tarafından alıntılanan "Git etiketi oluştur" blog gönderisini bir araya getirmek zorunda kaldım .
- Etiketinizi uzak depoya ittiğinizden emin olun.
git push --tags
- İşinizin "Git Deposu" bölümünde, "Kaynak Kod Yönetimi" başlığı altında "Gelişmiş" seçeneğini tıklayın.
- Refspec alanına aşağıdaki metni ekleyin:
+refs/tags/*:refs/remotes/origin/tags/*
- "Oluşturulacak dallar" altında, "Şube belirticisi" koyun
*/tags/<TAG_TO_BUILD>
( <TAG_TO_BUILD>
gerçek etiket adınızla değiştirin ).
Refspec'i eklemek benim için kritik oldu. Git depoları tüm uzak bilgileri varsayılan olarak boş bıraktığımda alıyor gibi görünse de, Git eklentisi yine de etiketimi bulamayacaktı. Sadece Refspec alanında açıkça "uzak etiketleri al" seçeneğini belirlediğimde Git eklentisi etiketimi tanımlayıp oluşturabiliyordu.
Güncelleme 2014-5-7 : Maalesef, bu çözüm Jenkins CI (v.1.555) ve Git deposu için Stash Webhook'tan Jenkins'e itme bildirim mekanizması için istenmeyen bir yan etkiyle geliyor : depodaki herhangi bir dal her güncellendiğinde bir itmede, etiket oluşturma işleri de yeniden tetiklenir. Bu, aynı etiket işlerinin birçok gereksiz yeniden oluşturulmasına yol açar. İşleri "Çalışma alanını kullanarak yoklamayı zorla" seçeneği ile ve olmadan yapılandırmayı denedim ve hiçbir etkisi olmadı. Jenkins'in etiket işleri için gereksiz derlemeler yapmasını engellememin tek yolu Refspec alanını temizlemek (yani, silmek +refs/tags/*:refs/remotes/origin/tags/*
).
Herhangi biri daha zarif bir çözüm bulursa, lütfen bu yanıtı bir güncellemeyle düzenleyin. Örneğin, refspec +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
yıldız işaretinin tümünü yakalama yerine özellikle belirtilmiş olsaydı, bunun gerçekleşmeyeceğinden şüpheleniyorum . Ancak şimdilik bu çözüm bizim için çalışıyor, sadece iş başarılı olduktan sonra fazladan Refspec'i kaldırıyoruz.