Làm thế nào để kết hợp Vagrant với Jenkins cho Môi trường Tích hợp Liên tục hoàn hảo?


85

Bạn có một dự án có một số yêu cầu SW để chạy (ví dụ: một phiên bản cụ thể của Apache, một phiên bản PHP, một phiên bản của cơ sở dữ liệu MySQL và một vài phần mềm khác).

Bạn đã phát hiện ra Vagrant , vì vậy môi trường ảo của bạn đã được thiết lập xong. Bạn có thể tạo hộp từ các tệp cấu hình và sách nấu ăn của mình.

Bạn cũng đã hiểu những ưu điểm của hệ thống Tích hợp Liên tục như Jenkins .

Bây giờ bạn muốn kết hợp hai thế giới này (Vagrant và Jenkins) để có được Môi trường Tích hợp Liên tục hoàn hảo. Cụ thể hơn, bạn không muốn cài đặt SW theo yêu cầu của dự án trên máy chạy Jenkins, nhưng bạn muốn sử dụng môi trường ảo do Vagrant cung cấp để định kỳ xây dựng dự án của mình trên đó. Phần mềm CI (Jenkins) sẽ xây dựng hộp Vagrant cho bạn và xây dựng và kiểm tra dự án của bạn trên đầu nó.

Bạn sẽ thiết lập môi trường của mình như thế nào để đạt được điều này?


4
Ngoài ra, thiết lập Jenkins của bạn là hộp Vagrant, vì vậy bạn có thể chạy môi trường CI này trên nhiều nền tảng, vì có rất nhiều điểm khác biệt giữa chúng.
Stephan Eggermont

1
Bạn đã tạo ra môi trường như vậy chưa? Sự kết hợp của Docker & Jenkins đã được nhiều người biết đến, tuy nhiên, nó sẽ không đủ cho các môi trường Windows trong trường hợp đó lựa chọn tốt duy nhất, IMO, là Vagrant + Jenkins. Có một số khía cạnh cần xem xét, chẳng hạn như chúng ta có thực sự cần nô lệ và trong bối cảnh nào hay chúng ta có thể sử dụng một máy chủ duy nhất để tạo môi trường xây dựng mơ hồ cho mỗi dự án theo yêu cầu (trong nhiều công ty, chỉ có một số dự án liên tục xây dựng, phần lớn hiếm khi được xây dựng), hay chúng ta nên sử dụng điều này trên đầu của hệ thống chống sao chép để giảm dung lượng đĩa.
majkinetor

Câu trả lời:


35

nó là một giải pháp tốt cho hệ thống xây dựng, gợi ý của tôi:

  1. Jenkins hiện tại của bạn hoạt động dưới dạng CI chính (có thể do người dùng jenkins bắt đầu)
  2. Tạo một người dùng khác trong cùng một máy hoặc một máy khác để hoạt động ở chế độ nô lệ jenkins
    • jenkins nô lệ có thể được gọi từ jenkins master và nó có thể sử dụng người dùng khác như vagrant đã có quyền và môi trường cho vagrant, do đó nó sẽ không can thiệp vào máy chủ jenkins gốc ban đầu
    • tạo hộp cơ sở của bạn, sau đó nó có thể được sử dụng lại để tăng tốc cho việc triển khai của bạn
  3. Hầu hết các thông tin cài đặt (gói) có thể được quản lý bởi con rối (hoặc đầu bếp) để tải vào hộp vm của bạn.

Có thể bạn có thể xem qua veewee , có thể tạo hộp lang thang một cách nhanh chóng.

Đây là Make CI dễ dàng hơn với Jenkins CI và Vagrant cho hướng dẫn của tôi cho đề xuất này.


1
Rất tiếc, liên kết của bạn bị hỏng
langlauf.io

2
Trong trường hợp ai đó đang quan tâm đến các liên kết bị hỏng, đây là một bản sao của Make CI dễ dàng hơn với Jenkins CI và Vagrant
Gilberto Treviño

12

Bạn có thể thử Plugin Vagrant cho Jenkins hiện hỗ trợ Jenkins CD 1.532.3

Bạn có thể xem bản demo của plugin này đang chạy tại http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html


7
plugin này không hỗ trợ Jenkins trên 1.490 nên đó là một hạn chế lớn :-(
kenyee

không hỗ trợ chạy lang thang trên nô lệ quá :(
Christophe Furmaniak

1
Có, nhưng sau đó bạn phải tự mình xử lý tất cả vòng đời của VM (tạo, hủy hoặc không khi kết thúc công việc, ...). Ý tưởng đằng sau plugin là plugin làm điều đó cho bạn và sau đó bạn có thể tập trung vào mục đích chính của mình: sử dụng máy ảo như một vùng chứa riêng biệt.
Christophe Furmaniak

2
Plugin được đề cập có các vấn đề ẩn danh vẫn chưa được khắc phục ( issue.jenkins-ci.org/browse/JENKINS-26326 ) và quá trình phát triển đã tạm dừng một năm trước. Không muốn giới thiệu.
Ross Ivantsiv

1
Chạy phiên bản vagrant theo yêu cầu để xây dựng có vẻ như là điều đúng đắn cần làm. Nếu plugin này vẫn hoạt động không ổn định?
Atifm

1

Cá nhân tôi khuyên bạn nên sử dụng Hashicorp Packer để tạo các hộp Vagrant của bạn cho các nhà phát triển và sau đó sử dụng nó để xuất hình ảnh Docker hoặc AWS hoặc OpenStack mà bạn có thể chạy trên hệ thống CI của mình. Vagrant là một công cụ tuyệt vời, nhưng chi phí của máy ảo có thể hơi cao đối với hệ thống CI liên tục xoay chúng lên xuống, đặc biệt nếu bạn muốn phản hồi thực sự nhanh.

Tại một khách hàng cũ, về cơ bản, chúng tôi đã khởi động các máy Vagrant một lần với hệ thống, sau đó chạy các bản dựng Docker / virtualenv bên trong các máy ảo đó và chúng tôi định kỳ phá hủy chúng khi có một bản nâng cấp lớn hoặc sự cố với môi trường hoạt động không chính xác.

https://www.packer.io/docs/builders/openstack.html


Nếu tôi có thể hỏi, bạn đã chạy jenkins như một người dùng riêng biệt chưa ?? Nếu vậy, bạn đã quản lý như thế nào để cung cấp quyền truy cập vào vagrant ?? Cảm ơn
Jaswanth Manigundan

Miễn là vagrant được cài đặt bình thường, nó sẽ được đưa vào đường dẫn hệ thống. Bản thân các hộp thường được tải vào thư mục chính của người dùng hiện tại nhưng bạn có thể ghi đè nhà lang thang bằng một biến môi trường. Chúng tôi đã kết hợp tất cả những điều này cộng với việc làm cho hộp kéo với một phiên bản cụ thể là một phần của quá trình xây dựng để nó được lưu vào bộ nhớ cache một lần và sau đó được sử dụng lại.
dragon788,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.