2012-04-12 29 views
20

Tôi có hai dự án Jenkins chia sẻ cơ sở dữ liệu. Chúng không được chạy đồng thời. Nói đúng ra, không có sự phụ thuộc cụ thể giữa chúng vượt quá sự không đồng thời, nhưng tại thời điểm này tôi quản lý một phần ràng buộc này bằng cách chạy một "hạ lưu" của cái kia. Điều này làm việc hầu hết thời gian, nhưng không phải lúc nào. Nếu một thay đổi kiểm soát nguồn xảy ra trong khi thứ hai đang chạy, lần đầu tiên sẽ bắt đầu lại, và chúng sẽ chạy đồng thời và có thể cả hai đều thất bại thảm hại.Làm cách nào để ngăn chặn hai dự án/công trình Jenkins chạy đồng thời?

Điều này tương tự, nhưng không giống nhau, đến How to prevent certain Jenkins jobs from running simultaneously? Sự khác biệt là tôi không gặp vấn đề "số lượng chủ đề" - Tôi chỉ chạy tối đa một luồng của bất kỳ dự án cụ thể nào tại một thời điểm , ngay cả trong trường hợp hai (xây dựng khác nhau) xây dựng dậm nhau. Điều này dường như loại trừ tất cả các đề xuất trong chuỗi đó.

+0

Các Khóa và chốt cắm được đề cập trong câu trả lời cho các câu hỏi mà bạn trích dẫn nên làm việc ở đây là tốt. –

+1

Khóa & chốt hoạt động cho trường hợp của tôi, nhưng nó nằm trên [danh sách "không dùng nữa"] (https://wiki.jenkins-ci.org/display/JENKINS/Proposed+Plugin+Deprecation). Nếu nó không được chấp nhận, có vẻ như [Exclusion-Plugin] mới hơn (https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin) sẽ thực hiện công việc cho tôi (và [Throttle Concurrent builds] (https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin) cho trường hợp khác, được tính). – jackr

Trả lời

21

Locks and Latches plugin nên giải quyết vấn đề của bạn. Tạo khóa và cả hai công việc đều sử dụng cùng một khóa. Điều đó sẽ ngăn chặn các công việc chạy đồng thời.

  1. Cài đặt plugin trong "Quản lý Jenkins: Quản lý plugin".
  2. Xác định (cung cấp tên cho) (các) khóa của bạn trong "Quản lý Jenkins: Định cấu hình hệ thống".
  3. Đối với mỗi công việc mà bạn muốn tham gia vào việc loại trừ,
    1. trong ": Cấu hình: Xây dựng Môi trường," kiểm tra "Khóa",
    2. và chọn tên khóa của bạn từ danh sách thả.
+0

Đây là giải pháp hoàn chỉnh, vì nó đã cho tôi một chút nghiên cứu và chi tiết: – jackr

+2

Cài đặt plugin trong "Quản lý Jenkins: Quản lý plugin". Xác định (cung cấp tên cho) (các) khóa của bạn trong "Quản lý Jenkins: Định cấu hình hệ thống". Đối với mỗi công việc bạn muốn tham gia vào loại trừ, trong ": Định cấu hình: Xây dựng môi trường", chọn "Khóa" và chọn tên khóa của bạn từ danh sách thả. – jackr

+1

@jackr Bạn nên chỉnh sửa nhận xét của mình thành câu trả lời này để hoàn thành câu trả lời! – chown

4

EDIT: Bên dưới thông tin có hiệu lực kể 04/10/2014

Plugin trừ, https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin Rất hữu ích nếu vài xây dựng sử dụng tài nguyên cùng - ví dụ một cơ sở dữ liệu thử nghiệm. Tất cả những gì bạn cần làm là cập nhật cấu hình của tất cả các công việc bằng cách sử dụng tài nguyên này và kết quả là chúng sẽ không bao giờ chạy song song nhưng chờ cho những người khác hoàn thành.

Trích từ: http://www.kaczanowscy.pl/tomek/2012-07/jenkins-plugins-part-iii-towards-continuous-delivery

Plugin này không chặn hai hoặc nhiều công việc từ chạy song song.
Để kiểm tra, làm việc này cho job1

  1. Configure
  2. Dưới Xây dựng Môi trường kiểm tra "Thêm tài nguyên để quản lý loại trừ."
  3. Sau đó Add -> Resource New -> Tên -> Khóa
  4. Dưới Build -> Add xây dựng bước
  5. Critical Khối Bắt đầu
  6. Thêm xây dựng bước -> Add bất cứ điều gì bạn muốn thêm vào. (thêm giấc ngủ 15 để chắc chắn rằng nó kéo dài lâu hơn để kiểm tra đồng thời.)
  7. Add xây dựng bước -> Critical khối cuối
  8. Lặp lại các bước trên cho job2, chắc chắn rằng bạn sử dụng tên khóa cùng 'khóa'.
  9. đồng thời tạo cả hai công việc một cách thủ công.
  10. Theo dõi tiến trình chạy dưới jenkins -> Quản trị loại trừ.
4

Lockable Resources Plugin. Đơn giản và hoạt động tốt cho tôi tháng 5 năm 2016.

Cài đặt plugin. Trong Quản lý Jenkins> Định cấu hình Hệ thống, hãy chuyển đến Trình quản lý tài nguyên có thể khóa.
Chọn Thêm tài nguyên có thể khóa. Nhập giá trị cho trường: Tên và nhấn Lưu. Cảnh báo: Không nhập dấu cách vào trường Tên.

Trong Jenkins>job_name> Định cấu hình> Chung, Chọn hộp kiểm: Bản dựng này yêu cầu tài nguyên có thể khóa. Nhập tên hoặc tên trong giá trị cho trường: Tài nguyên.

Bắt đầu xây dựng. Đang xây dựng # số chọn Tài nguyên đã khóa. Bạn sẽ thấy thông báo như sau: Bản dựng này đã khóa các tài nguyên sau: resource_name - resource_description.

Bắt đầu một bản dựng khác sử dụng cùng một tài nguyên. Bạn sẽ thấy Hàng đợi xây dựng trong trạng thái/trình đơn Jenkins hiển thị tên công việc. Hiển thị văn bản di chuột Bắt đầu bởi, Đang đợi nguồn lực resources_list, Đang chờ thời gian.

(còn thẻ tài nguyên/nhãn có thể được sử dụng)

+0

Plugin hay nhưng tôi không thấy Trong Jenkins> job_name> Cấu hình> Chung, Chọn hộp kiểm: Bản dựng này yêu cầu tài nguyên có thể khóa. Nhập tên hoặc tên trong giá trị cho trường: Tài nguyên. cho công việc đường ống. Có bất kỳ công việc xung quanh? –

+0

Bạn có thể mô tả vấn đề của mình cụ thể hơn không? Bạn có thấy "Bản dựng này yêu cầu tài nguyên có thể khóa" không? Bạn đã cài đặt plugin chưa? – gaoithe

Các vấn đề liên quan