Saya mengalami masalah membuat Jenkins membuat tag tertentu. Tag adalah bagian dari sebuah parametrized build, tapi saya tidak tahu bagaimana meneruskannya ke plugin git untuk membuat tag itu. Ini telah memakan waktu 3 jam dari hari saya dan saya telah mengakui kekalahan dari para master saat stack overflow.
120
Jawaban:
Saya dapat melakukannya dengan menggunakan parameter "branch to build":
Ganti [nama-tag] dengan nama tag Anda.
sumber
HEAD
. Logika plugin git tampaknya membandingkan kedua revisi ini, yang di repositori saya selalu tidak sama dan karenanya build baru selalu dipicu.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 .
git push --tags
+refs/tags/*:refs/remotes/origin/tags/*
*/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.sumber
+refs/heads/*:refs/remotes/origin/*
, sekarang akan menjadi+refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/remotes/origin/tags/*
. (Saya belum banyak bekerja dengan refspecs, jadi butuh beberapa eksperimen untuk mengetahui bahwa bidang ini dibatasi ruang.)Tidak bisakah Anda memberi tahu Jenkins untuk membangun dari nama Ref? Jika demikian maka itu
Dari semua pertanyaan yang saya lihat tentang Jenkins dan Hudson, saya sarankan untuk beralih ke TeamCity. Saya tidak perlu mengedit file konfigurasi apa pun agar TeamCity berfungsi.
sumber
git push --tags
Jika Anda menggunakan pipeline Jenkins dan ingin memeriksa tag tertentu (misalnya:
TAG
parameter build Anda), berikut ini yang dapat Anda lakukan:sumber
Di Jenkins terbaru (1.639 dan lebih tinggi), Anda dapat:
sumber
1.0.1
) di bidang cabang yang akan dibangun.Saya melakukan sesuatu seperti ini dan berhasil:
Jenkins log mengonfirmasi bahwa itu mendapatkan sumber dari tag
Memeriksa Revisi
0b4d6e810546663e931cccb45640583b596c24b9
(v0.9.5.2)sumber
refspec
trik tadi dengan mengklik tombol Advanced.Saya mengatur field Advanced-> Refspec ke
refs/tags/[your tag name]
. Ini tampaknya lebih sederhana daripada berbagai saran lainnya untuk Refspec, tetapi ini bekerja dengan baik untuk saya.UPDATE 23/7/2014 - Sebenarnya setelah dilakukan pengujian lebih lanjut, ternyata ini tidak berfungsi seperti yang diharapkan. Tampaknya versi HEAD masih diperiksa. Harap urungkan ini sebagai jawaban yang diterima. Saya akhirnya mendapatkan solusi yang berfungsi dengan mengikuti posting dari gotgenes di utas ini (30 Maret). Masalah yang disebutkan dalam posting itu tentang pemicu build yang tidak perlu bukanlah masalah bagi saya, karena pekerjaan saya dipicu dari pekerjaan hulu, bukan dari polling SCM.
UPDATE APR-2018 - Perhatikan di komentar bahwa ini berfungsi untuk satu orang, dan setuju dengan dokumentasi Jenkins.
sumber
refs/tags/<tagname>
adalah apa dokumentasi Jenkins mengatakan harus digunakan, dan itu bekerja dengan baik bagi saya. Mungkin plugin tersebut bermasalah pada saat postingan aslinya, tetapi ... per April 2018, ini adalah jawaban yang benar.refs/tags
awalan dan hanya menggunakan<tagname>
. YMMV, tapi ... berfungsi dengan baik untuk tujuan saya.Saya bisa membuat Jenkins membuat tag dengan mengatur Refspec dan Penentu Cabang seperti yang dijelaskan dalam posting blog ini .
Saya juga harus menyetel Nama Repositori (ke "asal" dalam kasus saya) sehingga saya bisa mereferensikannya di Refspec (jika tidak, tampaknya akan menggunakan nama yang dibuat secara acak).
sumber
Apa yang saya lakukan pada akhirnya adalah:
jenkins-target
, dan mendapatkan jenkins untuk melacaknyajenkins-target
jenkins-target
cabangSaya tidak yakin apakah ini akan berhasil untuk semua orang, proyek saya cukup kecil, tidak terlalu banyak tag dan barang, tetapi sangat mudah dilakukan, tidak perlu dipusingkan dengan spesifikasi dan parameter dan hal-hal :-)
sumber
Anda bahkan dapat membuat jenis tag, misalnya
1.2.3-alpha43
, menggunakan karakter pengganti:Referensi:
+refs/tags/*:refs/remotes/origin/tags/*
Penentu cabang:
origin/tags/1.2.3-alpha*
Anda juga dapat mencentang " Build when a change is push to GitHub " untuk memicu push, tetapi Anda harus menambahkan tindakan "create" ke webhook
sumber
Menambahkan dua sen saya di sini karena saya belum melihat jawaban yang menggunakan opsi "Build with parameter" di Jenkins.
Di sini saya menggunakan konsol browser Jenkins CI untuk proyek starwars_api dan saya dapat membuat langsung dengan "Build with parameter" dengan nilai refs / tags / tag-name
membangun dengan nama tag ref
sumber