Cách hiệu quả để đảm bảo hệ thống đá phiến sạch sẽ dùng cho dịch vụ tích hợp liên tục


10

Chúng tôi muốn thiết lập một dịch vụ tích hợp liên tục (CI) cho dự án của chúng tôi. Dịch vụ CI đó sẽ kiểm soát tất cả các khía cạnh của vòng đời dự án, bao gồm cả việc triển khai.

Đó là, chúng tôi muốn một tác nhân CI ở mỗi lần lặp để có một hệ thống sạch (cụ thể là Ubuntu Server), triển khai dự án của chúng tôi ở đó và chạy thử nghiệm.

Chúng tôi có thể sẽ tự viết dịch vụ CI, từ đầu, vì hệ sinh thái của chúng tôi khá bất thường. Câu hỏi là: làm thế nào để cung cấp hiệu quả hệ thống đá phiến sạch cho mỗi lần lặp CI?

Triển khai dự án cài đặt một vài gói Debian, cấu hình một số trang nginx và cũng cài đặt một số gói trong trình quản lý gói dành riêng cho ngôn ngữ thực hiện (LuaRocks), trên toàn hệ thống. Không có gì xâm phạm hơn thế (tôi tin). Vì vậy, điều quan trọng hơn là có thể thiết lập một bảng xếp hạng nhanh (trong vòng một phút trên phần cứng hiện đại, nhanh hơn - tốt hơn) hơn là đảm bảo sự cách ly và sạch tuyệt đối.

Tôi thấy hai cách để làm những gì chúng ta cần:

  • Hoặc là thiết lập một nhà tù của một số loại (như lxc, có thể).
  • Hoặc cài đặt một số máy ảo có thể chụp ảnh nhanh và sử dụng chúng.

Nhưng tại thời điểm này tôi không có đủ thông tin để quyết định.

Bạn sẽ khuyên gì? Còn lựa chọn nào khác không? Bất kỳ tên công cụ cụ thể?

Lưu ý: Dịch vụ CI sẽ được chạy bên trong máy khách Citrix XenServer. Giải pháp trả phí là OK nếu giá cả hợp lý. (Thông thường chúng không hợp lý trong lĩnh vực này.) Các giải pháp CI từ xa không ổn.

Câu trả lời:


5

Hãy xem Chef / Vagrant . Không chắc nó sẽ đủ nhanh, nhưng có gì đó để xem xét.

Chỉ trong trường hợp bạn không quen thuộc với Chef, nó là một máy chủ được thiết kế để cho phép cung cấp máy chủ dựa trên mã đơn giản. Tôi khuyên bạn nên xem một trong những webcast. Đầu bếp Django

Vagrant, veewee, đầu bếp-solo & dao-solo Tôi nghĩ rằng điều này bao gồm hầu hết những gì bạn muốn làm.

Bài đăng trên blog của Vagrant Một bài đăng trên blog cho thấy thiết lập nhanh chóng của máy chủ bằng Vagrant.


Cảm ơn bạn. Bạn có quan tâm để cung cấp thêm chi tiết trong câu trả lời của bạn?
Alexander Gladysh

Tôi đã không sử dụng nó cho việc này vì vậy, tất cả những gì tôi có thể làm là đăng một vài liên kết mà tôi nghĩ sẽ giúp ích.
Philip Tinney

13

Hãy nhìn vào Jenkins . Nó có các plugin cho phép bạn chạy các bản dựng trong các máy ảo trong VMWare hoặc VirtualBox hoặc trong đám mây Amazon / Eucalyptus . Đối với các máy ảo chạy trên đám mây, bạn có thể chỉ định tập lệnh init nơi bạn có thể thực hiện các bước như cài đặt gói.


Cảm ơn, nhưng Jenkins là một máy chủ CI và tôi muốn biết về phương tiện để tự xây dựng một cái.
Alexander Gladysh

2
@AlexanderGladysh Tại sao bạn muốn phát minh lại bánh xe? Các bản dựng của Jenkins có thể chạy mọi thứ, từ tạo tệp cho đến các tập lệnh shell đơn giản, cộng với nó có giao diện mạnh mẽ, hỗ trợ tuyệt vời và rất nhiều plugin. Ngay cả khi bản dựng của bạn rất phức tạp, nó phải là một kịch bản shell ở đâu đó mà jenkins có thể chạy
TheLQ

Ngay cả khi bạn không muốn sử dụng Jenkins, tôi nghĩ rằng một cái gì đó dựa trên đám mây sẽ là cách phù hợp với bạn. Bạn có thể tùy chỉnh hình ảnh máy để cung cấp phần mềm bạn muốn và chỉ thêm cấu hình và mã để kiểm tra khi bắt đầu phiên bản để giảm thời gian khởi động.
Lars Kotthoff

Dù sao, Jenkins hay không Jenkins, nên dùng gì để có được những bức ảnh chụp nhanh hệ điều hành sạch? (Xin vui lòng, ngừng đề cập đến các đám mây của bên thứ ba - điều này phải được chạy trên các máy chủ của chúng tôi.)
Alexander Gladysh

Chạy một đám mây bạch đàn / OpenStack / ... trên các máy chủ của riêng bạn?
Lars Kotthoff

2

Tôi sẽ sử dụng cơ sở hạ tầng VM và tạo một mẫu cơ sở hoặc sử dụng đám mây như @LarsKotthoff đề xuất. Thật dễ dàng để quay chúng nhanh, và bạn có thể chắc chắn nơi bạn bắt đầu.

Tuy nhiên, cuối cùng bạn sẽ cần một cái gì đó bên ngoài VM đó để sắp xếp những gì đang diễn ra (thiết lập máy và khởi động bất kỳ quy trình nào bạn muốn trên máy). Tôi sẽ xem xét Jenkins về khả năng nắm bắt đầu ra của các kịch bản để kiểm tra sau này.

Mặc dù Jenkins Khởi đầu là một máy chủ CI, nhiều tổ chức mà tôi đã làm việc bây giờ sử dụng nó nhiều hơn thế, nó thực sự là một công cụ để khởi động (thủ công hoặc theo lịch trình) và nắm bắt kết quả, và xác thực những gì đã xảy ra như mong đợi. Và nó rất linh hoạt.


Cảm ơn, nhưng tôi muốn thiết lập mọi thứ ngay bên trong Xen VM, không phải bên ngoài - việc này dễ tổ chức hơn trong trường hợp cụ thể của tôi. Tôi sẽ xem xét Jenkins, nhưng tôi vẫn đang tìm giải pháp hẹp hơn.
Alexander Gladysh

Ngoài ra, vui lòng giải thích chi tiết về "sử dụng cơ sở hạ tầng VM và tạo mẫu cơ sở".
Alexander Gladysh

2

Chúng tôi muốn thiết lập một dịch vụ tích hợp liên tục (CI) cho dự án của chúng tôi. Dịch vụ CI đó sẽ kiểm soát tất cả các khía cạnh của vòng đời dự án, bao gồm cả việc triển khai.

Jenkins đã được đề cập bởi khá nhiều. Bạn có thể bắt đầu với các kịch bản, nhưng Jenkins sẽ cung cấp cho bạn tất cả sự linh hoạt tương tự với ít chi phí kết hợp hơn.

Đó là, chúng tôi muốn một tác nhân CI ở mỗi lần lặp để có một hệ thống sạch (cụ thể là Ubuntu Server), triển khai dự án của chúng tôi ở đó và chạy thử nghiệm.

Triển khai dự án cài đặt một vài gói Debian, cấu hình một số trang nginx và cũng cài đặt một số gói trong trình quản lý gói dành riêng cho ngôn ngữ thực hiện (LuaRocks), trên toàn hệ thống. Không có gì xâm phạm hơn thế (tôi tin). Vì vậy, điều quan trọng hơn là có thể thiết lập một bảng xếp hạng nhanh (trong vòng một phút trên phần cứng hiện đại, nhanh hơn - tốt hơn) hơn là đảm bảo sự cách ly và sạch tuyệt đối.

Đây là nơi hình ảnh máy ảo có ích. Bạn có thể thiết lập hình ảnh sạch của mình và để mọi máy khởi chạy một ngã ba đó. Hình ảnh gốc không bao giờ được sửa đổi, nhưng thử nghiệm của bạn sẽ không biết sự khác biệt. Bạn chắc chắn sẽ có thể có được một hình ảnh bootstrap chạy trong một phút.

Giải pháp trả phí là OK nếu giá cả hợp lý. (Thông thường chúng không hợp lý trong lĩnh vực này.) Các giải pháp CI từ xa không ổn.

Nếu bạn đang tìm kiếm nhiều máy chạy cùng một lúc, hãy xem Nimbula (Tôi không biết xấu hổ; tôi làm việc cho họ). Đối với các triển khai nhỏ hơn, nó miễn phí và cho phép bạn kết hợp đám mây riêng của mình để thử nghiệm ... hoặc bất cứ điều gì khác. Giữa Jenkins và một tệp phối hợp, bạn có thể quay các máy chủ lưu trữ, máy khách thử nghiệm và mọi thứ khác để tự động chạy toàn bộ gammut mã thử nghiệm mà không có bất kỳ tương tác nào.


Ừ Có thể hôm nay tôi chậm, nhưng tôi đã cố gắng tìm hiểu thông qua trang web Nimbula, nhưng không thể thấy lý do đằng sau việc tiếp thị. Bạn có quan tâm đến việc chỉ ra một văn bản lành mạnh mô tả cách làm những gì tôi cần không? (Tức là thiết lập một mẫu máy khách và, từ kịch bản, khởi tạo và hủy nó cho mỗi phiên CI.)
Alexander Gladysh

@AlexanderGladysh Thật tiện dụng nếu bạn đang sử dụng nhiều máy để xây dựng từ / rất nhiều công việc CI. Thật vô ích nếu bạn không có đủ khối lượng công việc để đảm bảo một cụm gồm ít nhất 3 máy.
Jeff Ferland
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.