Làm cho nó không thể thực sự phát hành bất cứ điều gì mà không sửa chữa các bài kiểm tra.
- Thất bại trong việc xây dựng nếu bất kỳ thử nghiệm thất bại.
- Thất bại trong việc xây dựng nếu bất kỳ bài kiểm tra nào bị bỏ qua.
- Thất bại trong quá trình xây dựng nếu phạm vi kiểm tra xuống dưới một mức nhất định (vì vậy mọi người không thể xóa các kiểm tra để xử lý xung quanh nó).
- Sử dụng máy chủ CI để thực hiện các bản dựng phát hành của bạn và chỉ cho phép các bản dựng từ bản dựng bản dựng của máy chủ được thăng cấp lên UAT / dàn / sản xuất / bất cứ thứ gì.
Thực tế của vấn đề là, nếu bản dựng của bạn bị hỏng trong hơn 15 phút mỗi lần (và bao gồm các bài kiểm tra không thành công), thì bạn không thực hiện tích hợp liên tục .
"Tùy chọn hạt nhân" là để máy chủ kiểm soát nguồn của bạn từ chối xác nhận / đăng ký từ bất kỳ người dùng nào khác ngoài người đã phá vỡ bản dựng. Rõ ràng một quản trị viên cần có khả năng ghi đè tạm thời nếu người này nói đi nghỉ - nhưng, nếu mọi người biết rằng toàn bộ nhóm bị lừa cho đến khi họ sửa bài kiểm tra của mình, thì họ sẽ giải quyết nhanh chóng.
Một chính sách tốt (thậm chí còn tốt hơn khi được tự động hóa) là hoàn nguyên nguồn về cam kết ổn định đã biết cuối cùng sau 15 phút xây dựng không thành công. Nói cách khác, nếu bạn không thể sửa nó hoặc không biết nguyên nhân khiến bản dựng hoặc bản thử nghiệm bị hỏng, thì hãy hoàn nguyên nó và hoạt động cục bộ cho đến khi nó được giải quyết - không bao giờ khiến các nhà phát triển khác vặn ngón tay cái trong khi bạn nghiền nát vấn đề họ không quan tâm.
PS Nếu bạn đã có rất nhiều bài kiểm tra thất bại, bạn có thể sử dụng "ngưỡng theo dõi" trong CI. Thiết lập nó để bản dựng chỉ thất bại nếu có nhiều lỗi kiểm tra hơn lần trước. Điều này, cùng với quy tắc bảo hiểm, sẽ buộc các nhà phát triển cuối cùng cải thiện tình hình thử nghiệm nếu họ muốn có thể tiếp tục làm việc.
PPS Tôi nhận ra điều này có vẻ hà khắc với một số người, nhưng tất cả đều thuộc về văn hóa của bạn. Nếu bạn đến một điểm mà mọi người chỉ không làm cho bản dựng bị hỏng hoặc các bài kiểm tra thất bại (nhóm của tôi hầu như không bao giờ làm điều đó, mặc dù tôi thỉnh thoảng phải nhắc nhở họ), thì bạn không cần phải tiếp tục với bộ quy tắc nghiêm ngặt nhất. Mặc dù IMO, bạn nên luôn thất bại trong quá trình xây dựng bài kiểm tra đơn vị bị hỏng. Kiểm tra tích hợp / trình duyệt đôi khi có thể thất bại.