Tôi là nhà phát triển phần mềm trong một nhóm nhanh nhẹn (chúng tôi có tám nhà phát triển tích cực thay đổi một kho lưu trữ mã). Cứ sau hai tuần, chúng tôi lại đưa phiên bản mới của phần mềm vào sản xuất. Đây là quy trình làm việc hiện tại của chúng tôi:
- Khi bắt đầu một nhiệm vụ mới, các nhà phát triển tạo ra một "nhánh tính năng" từ nhánh phát triển chính (chúng tôi sử dụng git ) và làm việc với nhánh mới này
- Khi nhà phát triển đã hoàn thành công việc của họ, họ hợp nhất nhánh tính năng của họ trở lại nhánh phát triển
- Nhà phát triển sáp nhập nhánh phát triển vào nhánh QA.
- Một bản dựng được kích hoạt ngoài nhánh QA. Đầu ra của bản dựng này được triển khai vào môi trường QA của chúng tôi để cho phép người kiểm tra bắt đầu thử nghiệm.
Việc những người thử nghiệm của chúng tôi tìm thấy các vấn đề với các tính năng mới này đã được sáp nhập vào chi nhánh QA là khá phổ biến. Điều này có nghĩa là tại bất kỳ thời điểm nào, môi trường QA có thể chứa một số tính năng mới - một số tính năng đã được kiểm tra và không có lỗi và một số bị hỏng. Điều này làm cho việc phát hành trở nên khó khăn vì hiếm khi bản dựng QA ở trạng thái sẵn sàng sản xuất.
Để giảm thiểu điều này, chúng tôi đã cố gắng bắt đầu "đóng băng QA", nghĩa là các nhà phát triển không hợp nhất chi nhánh phát triển của chúng tôi vào chi nhánh QA một vài ngày trước khi phát hành. Sửa lỗi cho môi trường QA được thực hiện trực tiếp trên nhánh QA và sáp nhập xuống nhánh phát triển. Về mặt lý thuyết, điều này giúp các tính năng mới, bị hỏng ra khỏi QA trong khi vẫn cho phép chúng tôi khắc phục các sự cố đã có trong QA.
Mặc dù khái niệm "QA đóng băng" này đã thành công một phần, thật khó để phối hợp và mọi người thường bối rối về việc liệu họ có được phép hợp nhất với QA hay không. Thật khó để đặt ra thời hạn "QA đóng băng" - mọi người đều thích ý tưởng về một phòng thở giữa lúc đóng băng và phát hành, nhưng trên thực tế, họ muốn có tính năng của họ trong bản phát hành tiếp theo hơn là tôn trọng thời hạn.
Có cách nào tốt hơn để đảm bảo rằng chúng tôi có bản dựng sạch cho các bản phát hành của mình mỗi tuần không?