Không có câu trả lời nào trong số này là đủ đối với tôi, bằng cách sử dụng Jenkins CI v.1.555, plugin Git Client v.1.6.4 và plugin Git 2.0.4.
Tôi muốn một công việc xây dựng một kho lưu trữ Git cho một thẻ cụ thể, cố định (tức là không tham số hóa). Tôi đã phải đúc kết lại một giải pháp từ các câu trả lời khác nhau cộng với bài đăng blog "xây dựng thẻ Git" được trích dẫn bởi Thilo .
- Đảm bảo bạn đẩy thẻ của mình vào kho lưu trữ từ xa với
git push --tags
- Trong phần "Kho lưu trữ Git" công việc của bạn, dưới tiêu đề "Quản lý mã nguồn", hãy nhấp vào "Nâng cao".
- Trong trường cho Refspec, hãy thêm văn bản sau:
+refs/tags/*:refs/remotes/origin/tags/*
- Trong "Các chi nhánh để xây dựng", "Thông số chi nhánh", hãy đặt
*/tags/<TAG_TO_BUILD>
(thay thế <TAG_TO_BUILD>
bằng tên thẻ thực của bạn).
Việc thêm Refspec đối với tôi hóa ra là rất quan trọng. Mặc dù có vẻ như các kho lưu trữ git đang tìm nạp tất cả thông tin từ xa theo mặc định khi tôi để trống, tuy nhiên plugin Git sẽ hoàn toàn không tìm thấy thẻ của tôi. Chỉ khi tôi chỉ định rõ ràng "lấy thẻ từ xa" trong trường Refspec thì plugin Git mới có thể xác định và xây dựng từ thẻ của tôi.
Cập nhật 2014-5-7 : Thật không may, giải pháp này đi kèm với tác dụng phụ không mong muốn cho Jenkins CI (v.1.555) và cơ chế thông báo đẩy của kho lưu trữ Git à la Stash Webhook tới Jenkins : bất kỳ lúc nào bất kỳ nhánh nào trên kho lưu trữ được cập nhật trong một lần đẩy, các công việc xây dựng thẻ cũng sẽ kích hoạt trở lại. Điều này dẫn đến nhiều lần lặp đi lặp lại việc xây dựng lại cùng một thẻ không cần thiết. Tôi đã thử định cấu hình các công việc có và không có tùy chọn "Buộc bỏ phiếu bằng cách sử dụng không gian làm việc" và nó dường như không có tác dụng. Cách duy nhất tôi có thể ngăn Jenkins tạo các bản dựng không cần thiết cho các công việc thẻ là xóa trường Refspec (tức là xóa +refs/tags/*:refs/remotes/origin/tags/*
).
Nếu bất kỳ ai tìm thấy một giải pháp tốt hơn, vui lòng chỉnh sửa câu trả lời này với một bản cập nhật. Ví dụ, tôi nghi ngờ rằng có thể điều này sẽ không xảy ra nếu refspec cụ thể +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
chứ không phải là dấu hoa thị bắt tất cả. Tuy nhiên, hiện tại, giải pháp này đang hiệu quả với chúng tôi, chúng tôi chỉ cần xóa Refspec thừa sau khi công việc thành công.