Thiết lập máy chủ tích hợp, tôi nghi ngờ về cách tiếp cận tốt nhất liên quan đến việc sử dụng nhiều tác vụ để hoàn thành bản dựng. Là cách tốt nhất để đặt tất cả chỉ trong một công việc lớn hoặc làm cho những người phụ thuộc nhỏ?Cách tốt nhất để thiết lập máy chủ thử nghiệm tích hợp là gì?
Trả lời
Bạn chắc chắn muốn chia nhỏ các tác vụ. Đây là một ví dụ điển hình về cấu hình CruiseControl.NET có các mục tiêu (nhiệm vụ) khác nhau cho mỗi bước. Nó cũng sử dụng một tập tin common.build có thể được chia sẻ giữa các dự án với ít tùy biến.
http://code.google.com/p/dot-net-reference-app/source/browse/#svn/trunk
Tôi sử dụng TeamCity với tập lệnh xây dựng nant. TeamCity giúp bạn dễ dàng cài đặt phần máy chủ CI và kịch bản xây dựng của nant giúp dễ dàng thực hiện một số tác vụ khi có liên quan đến báo cáo.
Dưới đây là một bài báo tôi đã viết về việc sử dụng CI với CruiseControl.NET, nó có một kịch bản Nant xây dựng trong các ý kiến có thể được tái sử dụng trên các dự án:
Tôi chắc chắn sẽ phá vỡ các công việc. Rất có thể bạn đang có khả năng thực hiện các thay đổi trong bản dựng và sẽ dễ dàng hơn để theo dõi các vấn đề nếu bạn có các tác vụ nhỏ hơn thay vì tìm kiếm thông qua một bản dựng nguyên khối.
Bạn sẽ có thể tạo một công việc lớn từ những phần nhỏ hơn, dù sao đi nữa.
G'day,
Khi bạn đang nói về hội nhập thử nghiệm lớn (rõ ràng) mũi của tôi sẽ làm cho các máy chủ thử nghiệm xây dựng và cấu hình càng gần càng tốt đến môi trường triển khai như khả thi.
</thebloodyobvious> (-:
cổ vũ, Rob
Phương pháp tôi ủng hộ là thiết lập sau (Trên thực tế giả sử bạn đang ở trong một dự án NET):
- CruiseControl.NET.
- Nhiệm vụ NANT cho từng bước riêng lẻ. Nant.Contrib cho các mẫu CC thay thế.
- NUnit để chạy thử nghiệm đơn vị.
- NCover để thực hiện bảo hiểm mã.
- FXCop cho báo cáo phân tích tĩnh.
- Phiên bản phụ cho điều khiển nguồn.
- CCTray hoặc tương tự trên tất cả các hộp dev để có được thông báo về xây dựng và thất bại, vv
Trên nhiều dự án bạn thấy rằng có những cấp độ khác nhau của các bài kiểm tra và các hoạt động đó diễn ra khi ai đó làm một checkin. Đôi khi những điều này có thể tăng theo thời gian đến mức có thể là một thời gian dài sau khi xây dựng trước khi một nhà phát triển có thể xem liệu họ có phá vỡ bản dựng bằng một lần đăng ký hay không.
Những gì tôi làm trong những trường hợp này là tạo ra ba xây dựng (hoặc có thể hai):
- Một CI build được kích hoạt bởi checkin và không một SVN sạch Nhận, Xây dựng và chạy thử nghiệm nhẹ. Lý tưởng nhất bạn có thể giữ điều này xuống đến phút hoặc ít hơn.
- Một bản xây dựng toàn diện hơn có thể là hàng giờ (nếu thay đổi) thực hiện tương tự như CI nhưng chạy thử nghiệm toàn diện hơn và tốn thời gian hơn.
- Một xây dựng sớm một chiều mà làm mọi thứ và cũng chạy mã số bảo hiểm và phân tích tĩnh của các hội đồng và chạy bất kỳ bước triển khai xây dựng các gói MSI hàng ngày, vv
Điều quan trọng về bất kỳ hệ thống CI là nó cần phải hữu cơ và liên tục được tinh chỉnh. Có một số phần mở rộng tuyệt vời cho CruiseControl.NET có nhật ký và biểu đồ xây dựng timings vv cho các bước và cho phép bạn phân tích lịch sử và vì vậy cho phép bạn liên tục tinh chỉnh các bản dựng để giữ chúng linh hoạt. Đó là một cái gì đó mà các nhà quản lý thấy khó chấp nhận rằng một hộp xây dựng có thể sẽ giữ cho bạn bận rộn cho một phần năm thời gian làm việc của bạn chỉ để ngăn chặn nó ngừng lại.
Chúng tôi sử dụng buildbot, với bản dựng được chia thành các bước riêng biệt. Có một sự cân bằng được tìm thấy giữa việc xây dựng các bước được chia nhỏ với độ chi tiết đủ và là một đơn vị hoàn chỉnh.
Ví dụ ở vị trí hiện tại của tôi, chúng tôi xây dựng các phần con cho mỗi nền tảng của chúng tôi (Mac, Linux, Windows) trên nền tảng tương ứng của chúng. Sau đó chúng tôi có một bước (với một vài bước phụ) mà biên dịch chúng thành phiên bản cuối cùng sẽ kết thúc trong các bản phân phối cuối cùng.
Nếu xảy ra sự cố trong bất kỳ bước nào trong số các bước đó, bạn sẽ dễ dàng chẩn đoán.
Lời khuyên của tôi là viết các bước trên bảng trắng theo các thuật ngữ mơ hồ nhất có thể và sau đó căn cứ vào các bước của bạn. Trong trường hợp của tôi đó sẽ là:
- Build Plugin Pieces
- Compile cho Mac
- Compile cho PC
- Compile cho Linux
- Hãy thức Plugins
- Run Plugin kiểm tra
- Xây dựng IDE trung gian (Chúng tôi phải bootstrap xây dựng)
- Xây dựng IDE thức
- Run IDE kiểm tra
Phá nhiệm vụ của bạn lên rời rạc mục tiêu/hoạt động, sau đó sử dụng một kịch bản cấp cao hơn để buộc chúng lại với nhau một cách thích hợp.
Điều này làm cho quy trình xây dựng của bạn dễ hiểu hơn cho người khác (bạn đang làm tài liệu khi bạn đi để bất kỳ ai trong nhóm của bạn có thể nhặt nó lên, phải không?), Cũng như tăng khả năng tái sử dụng. Có thể bạn sẽ không sử dụng lại các kịch bản cấp cao (mặc dù điều này có thể xảy ra nếu bạn có dự án tương tự), nhưng bạn chắc chắn có thể sử dụng lại (ngay cả khi sao chép/dán) các hoạt động rời rạc khá dễ dàng.
Hãy xem xét ví dụ về việc nhận nguồn mới nhất từ kho lưu trữ của bạn. Bạn sẽ muốn nhóm các nhiệm vụ/hoạt động để lấy mã bằng một số câu lệnh ghi nhật ký và tham khảo thông tin tài khoản thích hợp. Đây là một thứ rất dễ sử dụng từ dự án này đến dự án tiếp theo.Đối với môi trường của nhóm chúng tôi, chúng tôi sử dụng NAnt vì nó cung cấp môi trường kịch bản phổ biến giữa các máy dev (nơi chúng tôi viết/gỡ lỗi các script) và máy chủ CI (vì chúng tôi chỉ thực thi cùng một kịch bản trong môi trường trong sạch). Chúng tôi sử dụng Jenkins để quản lý các bản dựng của chúng tôi, nhưng ở mỗi lõi của họ, mỗi dự án chỉ cần gọi vào các kịch bản NAnt tương tự và sau đó chúng tôi thao tác các kết quả (ví dụ, lưu trữ kết quả xây dựng, kiểm tra lỗi cờ).
- 1. Whats cách dễ nhất để thiết lập máy chủ lật đổ cục bộ là gì?
- 2. Cách tiếp cận bảo mật tốt nhất để tích hợp Salesforce.com với máy chủ .NET C#
- 3. Cách tốt nhất để thiết lập môi trường phát triển PHP trên máy Mac là gì?
- 4. Á hậu thử nghiệm Nunit tốt nhất là gì?
- 5. Cách tốt nhất để thiết kế một máy chủ GWT "Platform-Independent" là gì?
- 6. Làm cách nào để thử nghiệm tích hợp?
- 7. Chiến lược Git tốt nhất để thử nghiệm các phiên bản máy khách và máy chủ khác nhau
- 8. Phương pháp tốt nhất để thiết lập dự án .NET mới là gì?
- 9. Sử dụng tích hợp liên tục để triển khai vào máy ảo để chạy thử nghiệm tích hợp
- 10. Một bộ cấu hình thiết bị tốt để thử nghiệm ứng dụng Android trên trình giả lập là gì?
- 11. Cách tốt nhất để di chuyển tệp từ máy chủ này sang máy chủ khác với PHP là gì?
- 12. Thực hành tốt nhất cho thử nghiệm tích hợp tính năng Eclipse
- 13. Cách tốt nhất để tải thử nghiệm một ứng dụng trung tâm SignalR là gì?
- 14. Thử nghiệm tích hợp với Hibernate Envers
- 15. Máy chủ X giả để thử nghiệm?
- 16. Cách tốt nhất để tích hợp StyleCop với TFS CI
- 17. Tích hợp vs Thử nghiệm Đơn vị
- 18. Google có cung cấp cho người dùng thử nghiệm để thử nghiệm tích hợp
- 19. Junit nhiều thiết lập và thử nghiệm duy nhất
- 20. Cách tốt nhất/sạch nhất để thực hiện thử nghiệm A-B trong asp.net MVC là gì?
- 21. Làm cách nào để chạy thử nghiệm tích hợp?
- 22. Cách tốt nhất để tích hợp công cụ xây dựng bên ngoài vào Eclipse là gì?
- 23. Thiết lập tích hợp liên tục tốt nhất cho một nhà phát triển solo (.NET)
- 24. Tại sao máy chủ jetty bị treo sau khi máy chủ khởi động và không chạy thử nghiệm tích hợp?
- 25. Máy chủ ứng dụng nguồn mở tốt nhất là gì?
- 26. Cách tốt nhất để phân tích chuỗi là gì?
- 27. Thiết lập máy chủ phát triển
- 28. TDD: Có hợp lý để thử nghiệm tích hợp, nhưng không có thử nghiệm đơn vị?
- 29. Cách tốt nhất để truy cập các giao diện COM từ máy chủ J2EE là gì?
- 30. Thiết lập bộ thử nghiệm trong Ruby