Sau khi sử dụng Jenkins trong một thời gian, tôi thấy bạn nên sử dụng càng ít công việc càng tốt nếu bạn muốn sử dụng lại thư mục nguồn.
Thiết lập mặc định trong Jenkins là mỗi bản dựng sử dụng một thư mục khác làm không gian làm việc của nó. Điều đó ngụ ý rằng bạn thực hiện hoàn thành SVN checkout mọi build.Mà mất mãi mãi.
Nếu bạn muốn sử dụng cùng một thư mục nguồn cho mọi bản dựng, bạn phải lo lắng về việc đồng bộ hóa: Chỉ một bản dựng tại một thời điểm. Theo như tôi biết, Jenkins không có phương tiện đồng bộ hóa tích hợp. Cách duy nhất là chỉ sử dụng một người thực thi. Thậm chí sau đó bạn không thể kiểm soát cách người thực hiện lựa chọn công việc tiếp theo của mình.
Giả sử công việc "SVN update" kích hoạt công việc "Xây dựng". Ai đó bắt đầu "SVN update # 33", được cho là sẽ kích hoạt "Build # 33". Tuy nhiên, nếu tính năng "Poll SCM" của Jenkins lên lịch "SVN update" # 34 trong khi chờ đợi, tôi chưa tìm ra cách để nói rằng "Build # 33" phải chạy trước "SVN update # 34". Vì vậy, bạn có thể kết thúc với "SVN cập nhật # 34" chạy trước khi "Xây dựng # 33", và tất cả mọi thứ không thành công. Trừ khi bạn vô hiệu hóa thủ công việc bỏ phiếu. Và hãy nhắc nhở chính mình để kích hoạt lại nó sau đó, tất nhiên.
Dù sao. Sau khi sử dụng Jenkins trong hai năm, tôi thay đổi câu trả lời của mình thành: Không bao giờ sử dụng nhiều công việc chia sẻ tài nguyên (như thư mục nguồn), và đưa tất cả logic vào các kịch bản lệnh shell (đối với cấu hình vòng lặp).
Nguồn
2014-05-06 14:04:51
Bạn có thể sử dụng [Trình chặn xây dựng Jenkins] (https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin) -plugin để chặn "SVN update" -job trong khi "Xây dựng" - công việc đang chạy. –