Tak satu pun dari jawaban ini cukup bagi saya, menggunakan Jenkins CI v.1.555, plugin Git Client v.1.6.4, dan Git plugin 2.0.4.
Saya ingin sebuah pekerjaan dibangun untuk satu repositori Git untuk satu tag tertentu, tetap (yaitu, tidak berparameter). Saya harus mengumpulkan solusi dari berbagai jawaban ditambah posting blog "membangun tag Git" yang dikutip oleh Thilo .
- Pastikan Anda mendorong tag Anda ke repositori jarak jauh dengan
git push --tags
- Di bagian "Git Repository" dari pekerjaan Anda, di bawah tajuk "Manajemen Kode Sumber", klik "Lanjutan".
- Di bidang Refspec, tambahkan teks berikut:
+refs/tags/*:refs/remotes/origin/tags/*
- Di bawah "Branches to build", "Branch specifier", letakkan
*/tags/<TAG_TO_BUILD>
(ganti <TAG_TO_BUILD>
dengan nama tag Anda yang sebenarnya).
Menambahkan Refspec untuk saya ternyata sangat penting. Meskipun tampaknya repositori git mengambil semua informasi jarak jauh secara default ketika saya membiarkannya kosong, plugin Git akan gagal menemukan tag saya. Hanya ketika saya secara eksplisit menentukan "get the remote tags" di bidang Refspec, plugin Git dapat mengidentifikasi dan membangun dari tag saya.
Pembaruan 2014-5-7 : Sayangnya, solusi ini memang datang dengan efek samping yang tidak diinginkan untuk Jenkins CI (v.1.555) dan mekanisme pemberitahuan push repositori Git à la Stash Webhook ke Jenkins : kapan saja setiap cabang di repositori diperbarui dengan menekan, tugas pembuatan tag juga akan diaktifkan lagi. Hal ini menyebabkan banyak pembuatan ulang yang tidak perlu dari tugas tag yang sama berulang kali. Saya telah mencoba mengonfigurasi pekerjaan dengan dan tanpa opsi "Paksa polling menggunakan ruang kerja", dan tampaknya tidak berpengaruh. Satu-satunya cara saya dapat mencegah Jenkins dari membuat build yang tidak diperlukan untuk tugas tag adalah dengan mengosongkan bidang Refspec (yaitu, hapus +refs/tags/*:refs/remotes/origin/tags/*
).
Jika ada yang menemukan solusi yang lebih elegan, harap edit jawaban ini dengan pembaruan. Saya curiga, misalnya, bahwa mungkin ini tidak akan terjadi jika refspec secara khusus +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
bukan tanda bintang penangkap semua. Untuk saat ini, bagaimanapun, solusi ini berfungsi untuk kami, kami hanya menghapus Refspec tambahan setelah pekerjaan berhasil.