2009-10-02 27 views
8

Ngay bây giờ, chúng tôi đang xây dựng một số ứng dụng C++ cho nền tảng Win32. Chúng tôi sẽ sớm chuyển sang Linux và sau đó có thể nhiều hơn (32 và 64 bit cho cả hai).Cách sử dụng hudson khi xây dựng cho nhiều nền tảng

Thực hành tiêu chuẩn là gì, bạn có sử dụng nhiều máy chủ hudson trên mỗi nền tảng của riêng họ để tạo bản dựng hay dịch vụ hudson tạo máy ảo và xây dựng không?

Nó không phải là rõ ràng với tôi cách thực tế tốt nhất để làm điều này.

Lý tưởng nhất là tôi chỉ muốn một hộp có nhiều máy ảo chạy hudson, và sau đó nó khởi động khi cần.

Có tài nguyên ai đó có thể chỉ cho tôi để làm điều này không?

Trả lời

5

Chúng tôi sử dụng Hudson để quản lý C/C++ (GNU C, GNU C++, Watcom C) được xây dựng cho nhiều hệ điều hành. Đối với chúng tôi, phần mềm được xây dựng cho Linux, Linux x64, QNX 4 và QNX6. Cách chúng tôi đã thiết lập nó là:

  • 1 x VM cho máy chủ Hudson, chạy Windows
  • 4 x VM, một cho từng loại nô lệ, vì vậy tôi có 4 nô lệ Hudson - 1 cho mỗi QNX4, QNX6 và Linux 32 và Linux 64. Tất cả chúng đều chạy trên cùng một máy chủ, giống như các máy ảo khác nhau và chúng tôi không gặp phải vấn đề gì. Chúng tôi xây dựng khoảng 100 dự án, phân chia gần như bằng nhau giữa 4 loại hệ thống.

Bạn không cần bất kỳ phần cứng bổ sung nào. Có một plugin Hudson hoạt động với VMWare VM, để khởi động chúng và tắt chúng theo yêu cầu.

Tôi hy vọng rằng sẽ giúp.

+0

Cảm ơn - nó có vẻ giống như một thiết lập tốt cho chúng tôi là tốt. – Tim

+0

Tôi thiết lập hệ thống của chúng tôi từ đầu, vì vậy tôi biết phải mất thời gian, nhưng nó không phải là khó khăn. Tôi chỉ nhận ra rằng câu hỏi của bạn đã được đăng vào năm ngoái. Bạn có chạy gì không? – Sagar

+1

bạn có bất kỳ mẹo nào để thiết lập ngược lại. hệ thống hiện tại là Linux và các bản dựng khác cần phải được chạy trong các cửa sổ. – myusuf3

2

Tôi chưa bao giờ sử dụng hudson cho C++ nhưng đối với những gì bạn đang lên kế hoạch để làm, có thể có ý nghĩa khi nhìn vào số VMWare plugin và xem nó sẽ làm những gì bạn muốn. Tôi sẽ khuyên bạn nên chỉ có một chủ Hudson duy nhất nếu có thể. Những gì bạn có khả năng nhất muốn làm là thiết lập một hình ảnh máy ảo VMWare với một quá trình Hudson Slave cho mỗi môi trường đích sau đó sinh ra một bản dựng trong Slave đó.

+0

Đó là mục tiêu lý tưởng, nhưng tôi không chắc thực tế đó là như thế nào. Tôi chỉ phải chơi đùa với nó thôi. – Tim

2

Tôi đã chơi với hudson trong một kịch bản nhiều nền tảng hơn một năm trước. Tôi đã có một máy chủ hudson (rất dễ cài đặt) trên một số máy và xây dựng các nô lệ riêng biệt cho từng nền tảng. Tôi nhớ rằng trong một thời gian một trong những khách hàng xây dựng được trong một VirtualBox trên máy chủ lưu trữ máy chủ hudson. (Tôi nghĩ rằng tôi đã có máy chủ trên một máy ảo trong một thời gian, quá.) Tôi không thể nhớ có bất kỳ vấn đề nguyên tắc với thiết lập này.

Tuy nhiên, nếu bạn muốn có một số máy xây dựng ảo xây dựng trên cùng một máy vật lý, tôi nghĩ bạn sẽ cần một máy rất mạnh mẽ cho điều đó. Biên dịch C++ chiếm khá nhiều tài nguyên và, IIRC, khi hudson bắt đầu xây dựng, nó bắt đầu nó trên tất cả các nền tảng cùng một lúc.

+0

Yep - Tôi nhận ra rằng chúng tôi có thể phải có nhiều máy và trong trường hợp đó, có thể hoặc không đơn giản hơn để có hudson chạy trên mỗi nền tảng, mặc dù điều đó là ngớ ngẩn. Lý tưởng nhất là tôi muốn một máy chủ hudson kích hoạt từng nô lệ. Tôi đoán tôi chỉ phải cắn viên đạn và mua thêm phần cứng. – Tim

+1

Tim, bạn chỉ cần máy chủ _one_ hudson chứ không phải máy chủ cho mỗi nền tảng. Nhưng bạn sẽ cần một nô lệ xây dựng cho mỗi nền tảng. Bạn có thể kiểm tra điều này với các máy ảo cho đến khi bạn nghĩ rằng nó hoạt động, nhưng cuối cùng bạn có thể sẽ không tận hưởng CI nếu bạn xây dựng ba nền tảng trong các máy ảo trên cùng một máy vật lý. – sbi

+2

Điều quan trọng là phải hiểu rằng bạn chỉ cần * cần 1 máy chủ hudson. Bạn có thể làm mọi thứ khác với các nô lệ được cài đặt trên các kiến ​​trúc thích hợp. (* để giải thích hợp lý bao giờ) –

1

Lưu ý rằng không cần phải có bất kỳ mối quan hệ nào giữa máy chủ đang chạy Hudson và các máy phụ thuộc đang xây dựng các ứng dụng phần mềm của bạn. Do sự kỳ diệu của Java, bạn có thể kết nối các máy nô lệ khác nhau với chủ sử dụng JNLP. (một ví dụ) Vì vậy, cho dù chúng là máy vật lý hay máy ảo, bạn có thể có một máy chạy Windows, một Linux khác; một bit 32 bit, một bit khác 64 bit; v.v. - bất kỳ ứng dụng nào của bạn yêu cầu. Miễn là tất cả chúng đều có cài đặt JRE, chúng có thể kết nối với tổng thể Hudson và báo cáo trạng thái của các bản dựng.

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