2009-08-23 35 views
6

Gần đây, chúng tôi đã gặp sự cố trong đó một số mã đã được phát hành để phát hành không được lên lịch phát hành.Vô tình phát hành mã để sống. Làm thế nào để ngăn chặn xảy ra một lần nữa?

Nó rõ ràng đã được kiểm tra vào thân cây. Đó là tốt tôi đoán là bạn muốn 'kiểm tra trong đầu, kiểm tra thường xuyên'.

Tuy nhiên trong trường hợp này, nó không được cho là sẽ được phát hành trong bản phát hành tiếp theo.

Loại kiểm tra/chiến lược/quy trình nào có thể được áp dụng để tránh mã được phát hành sớm.

Dường như với tôi ngay cả với Tích hợp liên tục và Kiểm tra đơn vị, đây là vấn đề về thủ tục của con người?

- Lee

Trả lời

8

Sửa đổi quy trình tích hợp của bạn.

Nếu "phát trực tiếp" nghĩa là ai đó đang thực thi một số tập lệnh theo lô - đừng ngạc nhiên nếu điều này xảy ra lần nữa.

Ngoài ra, hãy xem xét phân nhánh. Một ví dụ phổ biến có thể là sử dụng thân cây để phát triển, một nhánh riêng biệt để thử nghiệm (nói, được sáp nhập một lần một tuần) và một nhánh cuối cùng (từ nhánh thử nghiệm nói trên) cho RTC.

Nhánh này, trước khi được triển khai vào sản xuất, cần được kiểm tra kỹ lưỡng.

+1

Tôi là người đề xuất phong cách chi nhánh cho mỗi bản phát hành - được thực hiện trong thân cây và sau đó một tuần (hoặc đủ thời gian để kiểm tra kỹ lưỡng) trước khi phát hành, trunk được phân nhánh, nhánh đó được kiểm tra và sau đó nhánh được triển khai. –

2

Vấn đề rõ ràng là không kiểm tra mã vào kho lưu trữ. Bạn có hai vấn đề ở đây:

1) Bất kỳ mã nào được phát hành phải có thẻ phiên bản đặc biệt hoặc chi nhánh hoặc bất kỳ điều gì tùy thuộc vào điều khiển nguồn bạn sử dụng. Vì vậy, mã phát trực tiếp không bao giờ bị nhầm lẫn với mã đang được phát triển.

2) Ai là người đã đặt mã chưa được kiểm tra? Có một SEVERE thiếu thông tin liên lạc đang diễn ra nếu người trực tiếp nghĩ rằng mã trong quá trình phát triển của bạn đã sẵn sàng cho sản xuất.

7

Bạn nên có các nhánh khác nhau nếu phần mềm điều khiển nguồn của bạn cho phép điều đó.

Trong trường hợp này, bạn sẽ có người chịu trách nhiệm về việc hợp nhất mã đã đáp ứng thanh chất lượng từ nhánh chính vào chi nhánh sản xuất.


UPDATE: Mặc dù sản phẩm cụ thể, hướng dẫn có sẵn tại TFS 2008 Branching Guide 2.0 có rất nhiều hướng dẫn mà có thể được áp dụng cho phần mềm điều khiển nguồn khác có khả năng tạo các chi nhánh.

4

Không được xây dựng để sản xuất từ ​​thân cây - kết hợp thủ công mã thử nghiệm đã được kiểm tra vào chi nhánh sản xuất và chuyển sang sống từ đó. Hoặc như các câu trả lời khác nói, sử dụng bất kỳ số lượng các chi nhánh và các bước trong thủ tục kiểm tra phù hợp với nhu cầu của bạn.

Ngoài ra, thay đổi mã mất hơn một ngày hoặc lâu hơn thường được thực hiện trong một chi nhánh tính năng riêng biệt cho đến khi hoàn thành.

+0

Có. Có thể http://www.perforce.com/perforce/conferences/us/2005/presentations/Wingerd.pdf mô tả chi tiết hơn. – ChrisW

1

loại kiểm tra/chiến lược/ quá trình gì có thể được đưa ra để tránh mã đang được phát hành để sống sớm.

Tôi sẽ nói bất kỳ quá trình nào không kiểm tra vào thân cây như một nghi thức phát triển thói quen, có nghĩa là bất kỳ mô hình phát triển nào ngoại trừ mã hóa cao bồi.

Cho phép nhà phát triển kiểm tra sớm và thường xuyên vào các chi nhánh của họ và kết hợp chúng vào thân cây khi thời gian tới.

2

Để tiếp tục thảo luận về phân nhánh, đó là cách để giữ cấu trúc xử lý phiên bản.

Chúng tôi sử dụng thân cây làm nhánh chính và khi chúng tôi đạt đến một điểm nhất định trong chu kỳ phát triển mà chúng tôi không được phép thực hiện các tính năng nữa (chỉ sửa lỗi), chúng tôi phân nhánh chi nhánh mới cho bản phát hành đó (thay vì trải qua quá trình hợp nhất dễ bị lỗi) và nhánh đó được kiểm tra kỹ trước khi chúng tôi tạo bản phát hành từ nó. Tất nhiên cho điều này để làm việc, mỗi lập trình viên cần phải giữ cho các cam kết sạch sẽ khi tính năng-freeze ngày đang đến gần.

1

Chúng tôi đã tạo một trình quản lý phát hành hoạt động với lật đổ. www.ReleaseManager.com Vì vậy, chúng tôi có thể kiểm soát những gì được phát hành bởi Số phát hành (hoặc Số Bug) và chúng tôi có quyền kiểm soát để chúng tôi có thể kéo mọi thứ ra khỏi bản phát hành khi cần. Tìm kiếm trang web beta bây giờ :)

2

Dường như với tôi ngay cả với Continuous Integration và Unit Tests đây là vấn đề thủ tục con người?

Thật vậy! Tuy nhiên bạn sẽ có thể nhận được một số hỗ trợ từ cơ sở hạ tầng của bạn để hỗ trợ cho phía con người trong quá trình của bạn. Khi bạn định thực hiện một bản phát hành, bạn sẽ có thể dễ dàng nhìn thấy tất cả các cam kết sẽ là một phần của nó và tất cả các vấn đề liên quan. Đây là mặt báo cáo của tích hợp liên tục. (Tôi muốn nói có four elements (pdf): xây dựng, triển khai, thử nghiệm và báo cáo.)

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