Tôi là một nhà thầu gần đây đã bắt đầu với một công ty.
Nhóm là 3 nhà phát triển bao gồm 2 nhà phát triển từ trung cấp đến trung cấp, với một nhà phát triển khác ở cùng cấp độ bắt đầu sớm và bản thân tôi (6 Năm xp). Đối với cả các nhà phát triển hiện tại, đây là công việc đầu tiên của họ ngoài đại học / cao đẳng và họ chưa bao giờ có một nhà phát triển cao cấp nào giám sát công việc của họ trước đây.
Không có chính sách kiểm soát Phiên bản rõ ràng. Các nhà phát triển thực hiện tất cả các phát triển trên thân cây và sau đó triển khai để sản xuất trực tiếp từ các máy phát triển của họ. Nhóm hiện tại không quen thuộc với việc phân nhánh.
Tôi đang thay đổi tất cả điều này và giới thiệu các máy chủ thử nghiệm / dàn dựng / sản xuất CI, TDD, v.v., cùng với chính sách kiểm soát phiên bản để khen ngợi điều này.
Hệ thống kiểm soát nguồn là TFS, cái mà tôi chưa từng sử dụng trước đây. Nó được cấu hình như một kho lưu trữ khổng lồ.
Tôi đã viết ra một vài gợi ý cho họ, nhưng liệu còn điều gì khác tôi nên thêm / sửa đổi, ghi nhớ kinh nghiệm của đội không?
Chính sách kiểm soát phiên bản
Phát triển được thực hiện trên thân cây
Nếu một thay đổi được ước tính mất hơn một tuần thì nên thực hiện trên một nhánh, với sự hợp nhất thường xuyên từ thân cây vào nhánh để ngăn chặn cả hai không đồng bộ.
Phát hành chi nhánh được tạo cho mã sản xuất. Chi nhánh đó chỉ nên chứa mã ổn định. Chúng tôi có thể có một nhánh phát hành được cập nhật từ trung kế một lần mỗi lần chạy nước rút hoặc chúng tôi có thể tạo một nhánh phát hành riêng cho mỗi tuần.
Nếu một sửa lỗi khẩn cấp ảnh hưởng đến mã sản xuất cần phải được thực hiện, thì nó sẽ được thực hiện trên nhánh phát hành và sáp nhập trở lại vào thân cây.
Nếu chúng ta áp dụng chiến lược một nhánh phát hành thì thân cây sẽ được sáp nhập vào nhánh phát hành một lần cho mỗi lần chạy nước rút vào cuối giai đoạn nước rút.
Nếu chúng tôi áp dụng nhánh riêng cho mỗi chiến lược phát hành, thì thân cây KHÔNG BAO GIỜ được sáp nhập vào nhánh Phát hành
Trong một số trường hợp, có thể cần phải sửa lỗi hai lần trên các nhánh khác nhau, nếu các nhánh đã chuyển hướng quá nhiều. Nếu chúng ta đang chạy nước rút ngắn thì điều này không nên xảy ra quá thường xuyên.
Tôi dự định có ba máy chủ. Kiểm tra môi trường luôn chạy mã mới nhất trong repo. Một môi trường dàn dựng đang chạy ứng cử viên phát hành mới nhất để dàn dựng / thử nghiệm Mã ứng viên phát hành và các mục đích UAT, và môi trường sản xuất.
Lý do tại sao tôi dự định làm điều này là cho đến nay khách hàng chỉ mới thực hiện phần mềm nội bộ. Dự án mới nhất dành cho một khách hàng truyền thông có cấu hình cao và cảm giác của tôi là nhóm cần áp dụng một mô hình phát triển chuyên nghiệp hơn so với những gì họ làm vào lúc này.
Ví dụ tại thời điểm này, một người dùng có thể gọi điện cho nhóm với báo cáo lỗi. Các nhà phát triển xác định vị trí và sửa lỗi, thực hiện kiểm tra nhanh nhãn cầu trên máy của chính họ và sau đó triển khai thẳng vào sản xuất. Không có thử nghiệm tự động hoặc bất cứ điều gì.
Nhìn nhận lại tôi nghĩ nhánh tính năng là một bước quá xa và tôi sẽ loại bỏ nó.
Vì vậy, về cơ bản, nó đi xuống a) không phân nhánh nào cả) b) một nhánh phát hành và thân cây, và c) một nhánh phát hành trên mỗi bản phát hành và thân cây.
Tôi đã nghiêng về phía sau. Suy nghĩ ban đầu của tôi là tôi sẽ có cả một ứng cử viên phát hành và một bản phát hành để tồn tại trên các máy chủ riêng biệt (UAT / Sản xuất) cùng một lúc, nhưng chính xác thì thân cây là ứng cử viên phát hành tại bất kỳ thời điểm nào, do đó, một chi nhánh phát hành đang nghiêng về phía điên rồ. Suy nghĩ duy nhất của tôi là nếu chúng tôi không muốn các bên liên quan của mình thấy mã phát triển thì chúng tôi có thể cần một nhánh ứng viên phát hành riêng biệt, nhưng YAGNI và tất cả những thứ đó .....