2009-08-02 30 views
12

Gần đây tôi đã xem xét buildbot và việc thiếu tài liệu và cấu hình mẫu tốt làm cho việc hiểu cách buildbot thường được sử dụng như thế nào.Làm thế nào để mở rộng quy mô buildbot trong một công ty

Theo hướng dẫn sử dụng buildbot, mỗi người xây dựng phải chịu trách nhiệm cho 1 cơ sở mã. Điều đó có nghĩa rằng một công ty muốn sử dụng buildbot trên, nói rằng, 10 dự án, cần phải duy trì 10 bộ cài đặt buildbot khác nhau (cấu hình bậc thầy, cổng mở, trang web có đầu ra, v.v.). Đây thực sự là cách mọi thứ được thực hiện? Tôi có thiếu một tùy chọn tạo ra một kết hợp dễ bảo trì và giám sát không?

Cảm ơn!

+1

FWIW, hiện tại công việc đang được tiến hành để cải thiện quy mô của buildbot, được tài trợ bởi dự án Mozilla. (Ai điều hành một _master lớn buildmaster). Xem danh sách thư của buildbot để biết chi tiết. – Macke

Trả lời

4

Tại nơi làm việc của mình, chúng tôi sử dụng Buildbot để kiểm tra một chương trình trên một số kiến ​​trúc và phiên bản của Python. Tôi sử dụng một bậc thầy xây dựng để giám sát khoảng 16 nô lệ. Mỗi bộ nô lệ lấy từ một repo khác và kiểm tra nó với Python 2.X.

Từ kinh nghiệm của tôi, bạn có thể dễ dàng định cấu hình một bậc thầy xây dựng duy nhất để chạy kết hợp các dự án. Điều này có thể không phải là một ý tưởng tốt bởi vì trang thác nước (nơi các kết quả báo cáo nô lệ xây dựng) có thể bị tắc nghẽn với nhiều hơn một vài nô lệ. Nếu bạn cảm thấy thoải mái khi cuộn qua một trang thác nước dài thì đây sẽ không phải là vấn đề.

EDIT:

Lệnh cập nhật trong master.cfg:

test_python26_linux.addStep(ShellCommand, name = "update pygr", 
    command = ["/u/opierce/PygrBuildBot/update.sh","000-buildbot","ctb"], workdir=".") 

000-buildbot và ctb là tham số bổ sung để xác định các chi nhánh và repo để kéo từ để có được thông tin. Kịch bản update.sh là một cái gì đó tôi đã viết để tránh một vấn đề git không liên quan. Nếu bạn muốn chạy các dự án khác nhau, bạn có thể viết một cái gì đó như:

builder1.addStep(ShellCommand, name = "update project 1", 
    command = ["git","pull","git://github.com/your_id/project1.git"], workdir=".") 

(the rest of builder1 steps) 

builder2.addStep(ShellCommand, name = "update project 2", 
    command = ["git","pull","git://github.com/your_id/project2.git"], workdir=".") 

(the rest of builder2 steps) 

Hai dự án này không phải liên quan. Buildbot tạo một thư mục cho mỗi người xây dựng và chạy tất cả các bước trong thư mục đó.

+0

Cấu hình chính chỉ cho nô lệ chạy một loạt các lệnh đầu cuối. Để chạy một phiên bản khác hoặc dự án khác, bạn chỉ cần yêu cầu nó kéo từ một repo khác. Bởi vì bạn có thể cá nhân hóa các lệnh cho mỗi nô lệ bạn có thể có mỗi nô lệ chạy một phiên bản khác nhau/dự án/bất cứ điều gì. –

+0

Không, điều đó ngược lại với những gì tôi đang nói. Kéo từ một kho lưu trữ và chạy các bản dựng thời gian thực là ý tưởng đằng sau việc tích hợp liên tục. Chúng tôi sử dụng git để kiểm soát phiên bản. –

+0

Cuối cùng tôi đã hiểu ý bạn là gì, và đây thực sự là một ý tưởng hay. Chỉ đáng lưu ý - chúng tôi đã quyết định sử dụng các danh mục để chúng tôi có thể chia tầm nhìn thác nước theo các danh mục đó và vì vậy mỗi nhà phát triển chỉ thấy các dự án mà anh ấy quan tâm. – abyx

3

FYI, BuildBot 0.8.x hỗ trợ một số kho lưu trữ trên một máy chủ, đơn giản hóa mọi thứ một chút.

+1

Bạn có thể xem ví dụ trong [câu hỏi liên quan] (http://stackoverflow.com/questions/2795386/support-for- nhiều kho lưu trữ-sử dụng-buildbot/7148534 # 7148534) – hithwen

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