2009-10-21 35 views
5

Bạn thường làm gì khi kiểm tra mã trong phần mềm điều khiển phiên bản để thực hiện tích hợp liên tục hoặc xây dựng hàng đêm? Bạn có 1) kéo mã mới nhất hoặc 2) bằng một số thẻ (tức là CHỨC NĂNG) đại diện cho mã mới nhất của nhà phát triển được kiểm tra không?Kiểm tra để tích hợp liên tục

Tôi đoán câu trả lời cho điều này phụ thuộc vào cách mọi người thường sử dụng kho lưu trữ quản lý cấu hình của họ. Bạn có ý định chỉ lưu trữ mã "hoàn tất" không. Nếu đúng như vậy, nếu một nhà phát triển đang làm việc trên một công việc trong một tuần hoặc lâu hơn, họ sẽ không thể kiểm tra bất cứ thứ gì cho đến khi nhiệm vụ được hoàn thành. Tuy nhiên, nếu máy chủ tích hợp liên tục chỉ được kéo bởi một thẻ nổi tiếng thay vì kéo mã mới nhất, thì điều này sẽ cho phép các nhà phát triển kiểm tra mã thường xuyên khi họ đang làm việc để lưu trữ lịch sử công việc của họ. Sau đó, khi họ cảm thấy thoải mái với những thay đổi, họ có thể gắn thẻ mã mới của họ bằng thẻ FUNCTIONAL.

Chỉ muốn biết các phương pháp hay nhất.

Cảm ơn

+0

Giả sử nhà phát triển không thể thực hiện tác vụ mà không gây ra sự cố, nhưng điều đó không nhất thiết phải đúng, đặc biệt là khi họ chạy thử nghiệm đơn vị trước mỗi lần commit và tránh thực hiện một cam kết khi các bài kiểm tra thất bại. – bdsl

Trả lời

2

Vì vậy, những gì chúng tôi thường làm là có nhánh "xây dựng" mà máy chủ CI xây dựng. Chúng tôi hợp nhất mọi thứ mà chúng tôi muốn đưa vào bản dựng hàng đêm vào nhánh xây dựng và nó sẽ xây dựng ở đó.

Chúng tôi không thực sự phát triển dựa trên chi nhánh xây dựng tho, chúng tôi có các chi nhánh phát triển được sử dụng để giữ các thay đổi chưa sẵn sàng phát hành cho môi trường thử nghiệm.

+0

Bạn sử dụng công cụ nào? Liệu nó làm cho việc phân nhánh liên tục và hợp nhất khá đơn giản? – dewald

+0

Chúng tôi sử dụng TeamCity. Máy chủ CI không thực sự thực hiện bất kỳ việc phân nhánh và hợp nhất nào, điều đó vẫn còn tùy thuộc vào các nhà phát triển. Những gì máy chủ CI thực hiện là phát hiện một cam kết với một nhánh SVN cụ thể và kích hoạt một bản dựng. Một xây dựng bao gồm biên dịch ứng dụng, chạy thử nghiệm đơn vị và triển khai ứng dụng tới máy chủ – lomaxx

1

Các khuyến nghị chính tôi muốn đặt ra cho một CI (giống như quy tắc của ngón tay cái):

  1. Có nó để kéo mã từ HEAD/MASTER. Làm cho HEAD/MASTER của bạn luôn luôn mới nhất có thể và như ổn định nhất có thể.
  2. Không ai có thể cam kết mã bị hỏng cho số HEAD/MASTER. Nếu điều đó xảy ra, nó có nghĩa là ai đó đã phá vỡ bản dựng.
  3. Bất kỳ ai phá vỡ tòa nhà phải là cam kết khắc phục ngay sau có thể.
  4. Yêu cầu CI của bạn chạy các bản dựng trên cơ sở mỗi lần commit . Vì vậy, ngay sau khi người nào đó cam kết mã bị hỏng đến HEAD , CI sẽ nhận được mã đó và ngắt bản dựng. Hầu hết các máy chủ của CI mà tôi đã thấy hỗ trợ modus operandi này.
  5. Bạn cũng có thể sử dụng CI để tạo các bản dựng hàng đêm và gắn thẻ mã khi chúng tạo các gói . Đây cũng là một thực hành tốt và bạn có thể thấy rằng việc đi trên nhiều CI từ các dự án mã nguồn mở trên toàn thế giới.

Một số kinh nghiệm của tôi: CI của chúng tôi sẽ lấy mã từ HEAD/MASTER. Chúng tôi sử dụng git ở đây, vì vậy nó luôn luôn rất dễ dàng cho các nhà phát triển của chúng tôi để làm việc trên các chi nhánh và giữ chúng được đồng bộ hóa - nhưng họ chỉ nhận được cam kết mã ổn định cho HEAD/MASTER.

+0

Tôi đồng ý với hầu hết các điểm trên - một ý nghĩ thận trọng - Tôi thấy khó khăn để có được CI trơn tru nếu một người đang chạy trên cơ sở mỗi cam kết trong một nhóm nhiều nhà phát triển đang làm việc trên một số mô-đun của một dự án lớn cùng một lúc. Tần suất cam kết có xu hướng áp đảo máy chủ CI đặc biệt nếu bạn có nhiều thử nghiệm. Trong trường hợp này, hãy cố gắng chạy hàng loạt để chạy sau một số lần cam kết nhất định hoặc theo lịch biểu. – Nikhil

0

Câu trả lời đúng dựa trên cách bạn tổ chức mã của mình.

Nếu đường chính luôn được coi là ổn định/làm việc, thì bạn chỉ cần xây dựng từ đó.

Nếu bạn có một chi nhánh đó là "vàng" chi nhánh, sau đó ...

Tại cửa hàng của chúng tôi, chúng tôi có ba loại ngành:

  • Mainline // luôn thể xây dựng luôn " sẵn sàng để phát hành một lần QA được thực hiện"
  • chi nhánh phát hành // vàng, phát hành và phát hành-có thể bất cứ lúc nào
  • chi nhánh phát triển // nơi phẫu thuật lộn xộn được thực hiện

(Tất nhiên để làm được điều này cũng cần một vcs tốt. Chúng tôi sử dụng lực lượng, có phân nhánh tuyệt vời.)

Chúng tôi làm tòa nhà liên tục của chúng tôi từ các nhánh chính và các nhánh phát hành.

HTH

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