Nơi để đẩy một bài kiểm tra thất bại?


15

Tôi vừa thay đổi cài đặt nhánh trên kho GitHub của mình, để nhánh [tiếp theo] của tôi yêu cầu xây dựng CI thông qua yêu cầu kéo.

Một cuộc thảo luận theo sau với một số thành viên trong nhóm, về các bài kiểm tra thất bại.

Vì bối cảnh ...

Kho lưu trữ có một nhánh [chính] chỉ PRED khi có bản phát hành, vì vậy [master] chứa mã như bản phát hành cuối cùng, bất kể đó là chính, phụ, hotfix, beta, alpha / xây dựng trước khi phát hành.

Nhánh [next] là nhánh "mặc định", nơi chúng tôi dự định giữ mã "sẵn sàng phát hành"; về mặt kỹ thuật, chi nhánh đó có thể được đưa vào [master] bất cứ lúc nào và được phát hành.

Các nhánh riêng lẻ có các nhánh dev riêng và những người đóng góp PR cho [tiếp theo].

Khi tôi xem xét một PR không tầm thường, tôi sẽ hợp nhất nhánh nhà phát triển của cộng tác viên vào nhánh "đánh giá" của mình và nếu tôi thấy những điều tôi có thể khắc phục nhanh chóng, tôi sẽ cam kết / đẩy các thay đổi và thử nghiệm mới (đôi khi không thành công) và PR trở lại chi nhánh dev của người đóng góp; khi họ hợp nhất các thay đổi của tôi vào, làm cho các thử nghiệm thất bại mới vượt qua, rồi đẩy, PR của chúng được đồng bộ hóa, và sau đó tôi sẽ hợp nhất PR vào [tiếp theo].

Nhưng câu hỏi này không phải là về việc vượt qua các bài kiểm tra, mà là về những bài thi thất bại .


Không kiểm tra tài liệu những gì cần phải được sửa chữa.

Các lỗi đã biết nên có các bài kiểm tra được viết cho, để chúng tôi biết những gì không hoạt động.

Về mặt kỹ thuật, danh sách các vấn đề GitHub (được lọc cho và / hoặc nhãn ) cũng làm điều đó. Đó có phải là một thực hành tốt để cũng có một loạt các bài kiểm tra thất bại để ghi lại lỗi?

Một thất bại xây dựng trên [tiếp theo] có nghĩa là chúng ta không tiết lộ sẵn sàng ... nhưng sau đó "được phát hành-ready" là một chút như "đang sẵn sàng" để có con - bạn không bao giờ khá sẵn sàng cho điều này, và một cái gì đó, ở đâu đó (có tầm quan trọng thay đổi) chắc chắn sẽ đi sai với bản phát hành.


Vì vậy, chúng tôi chỉ đẩy các bài kiểm tra đến [tiếp theo]. Sau đó đẩy bài kiểm tra thất bại ở đâu? Ý tôi là, ngoài quy trình PR / xem xét?

Ví dụ: người dùng báo cáo một lỗi mới trong danh sách các vấn đề và tôi muốn viết một bộ kiểm tra không thành công cho nó - để chỉ định những gì cần phải làm và ở đâu, giúp những người đóng góp mới dễ dàng nhận ra hơn và cuối cùng PR một sửa chữa.

Tôi nên đẩy những bài kiểm tra thất bại này ở đâu? Hoặc thậm chí là một ý tưởng tốt để đẩy các bài kiểm tra thất bại ở bất cứ đâu?


@PhilipKendall điểm tốt! chúng tôi vẫn đang điều chỉnh quá trình của chúng tôi; Tôi không thích cách VS kiểm tra "bỏ qua" các bài kiểm tra cùng với các bài kiểm tra "không kết luận" - nếu một trong các bài kiểm tra cấp thấp không thành công, chúng tôi không muốn một nửa bài kiểm tra thất bại, vì vậy chúng tôi không đưa ra kết luận khi điều kiện tiên quyết không được đáp ứng ; điều này làm cho các bài kiểm tra báo cáo sự thất bại vì những lý do chính đáng và "không kết luận" khi họ không thể kiểm tra những gì họ đã viết. Chúng ta không có nhiều trong số chúng (nữa), vì vậy bỏ qua chúng có thể là một lựa chọn ... nhưng sau đó, nó có phải là một thử nghiệm thất bại nếu nó bị bỏ qua ?
Mathieu Guindon

Tại sao một phần của quy trình xem xét lại liên quan đến việc bạn viết bất kỳ mã nào? Nếu bạn thấy một lỗi thì bạn bình luận trong PR và, tùy ý, từ chối PR.
James

@James tốt, tôi thích viết mã .. ngoài ra khi có nhiều người đóng góp tham gia, tôi đang thực hiện ngày càng nhiều công việc bảo trì GitHub và PR (quan hệ công chúng) hơn mã hóa thực tế!
Mathieu Guindon

Câu trả lời:


12

Những gì tôi sẽ làm trong tình huống này là đánh dấu các bài kiểm tra thất bại là "bị bỏ qua" - theo cách đó bạn vẫn có bài kiểm tra để bạn biết những gì bạn cần khắc phục trong tương lai, nhưng bạn sẽ không kết thúc với các bản dựng bị hỏng .

Nếu bạn cũng gắn thẻ từng bài kiểm tra với tham chiếu theo dõi vấn đề để khắc phục sự cố, điều đó mang lại cho bạn một cách dễ dàng để gắn kết mọi thứ lại với nhau.


5

Tiết lộ đầy đủ: Tôi là một trong những người tham gia thảo luận.

Chi nhánh chính của kho lưu trữ không phải là chi nhánh chính. Việc hợp nhất thành chủ không phục vụ bất kỳ "mục đích thực tế" nào và chi nhánh đó không làm những việc mà một chi nhánh nên làm (cụ thể là di chuyển ).
Bạn đang lạm dụng chi nhánh này làm Thẻ cho bản phát hành mới nhất.

Thay vì sử dụng một nhánh, hãy sử dụng Thẻ. Khi bạn muốn phát hành, bạn thực hiện các bước cần thiết trong "Chi nhánh phát hành", giống như một nhánh chủ đề. Sau đó, bạn hợp nhất nó vào [tiếp theo] và đặt một Thẻ trên đó.

Vai trò [tiếp theo] hoàn thành, là của một nhánh chính. Chỉ có mã phát hành sẵn sàng đi vào đó. Bất cứ điều gì khác sẽ là một nhánh [phát triển]. Một nhánh phát triển chứa công việc sẽ được ổn định . Điều này có nghĩa là: xóa [chính], tái sử dụng [tiếp theo] theo cách bạn đã làm và tạo một nhánh khác cho công việc "kém ổn định".

Vì đó là ngoại lệ nhiều hơn so với quy tắc cần phải thử nghiệm thất bại, nhắc nhở về các lỗi còn tồn tại, nên không có quá nhiều vấn đề để tạo và phá hủy nhánh kém ổn định đó khi cần


1
Có bản phát hành mới nhất trong [master] giúp dễ dàng phân nhánh bản phát hành cuối cùng để phát hành hotfix; sau đó, hotfix có thể được đưa vào [tiếp theo] và từ đó vào mọi nhánh dev .. hoặc tôi có thiếu thứ gì không?
Mathieu Guindon

2
Bạn chỉ có thể git checkout -b HotFix ReleaseTag(đó là nếu tôi nhớ chính xác cú pháp tạo thanh toán). Điều này sẽ tạo ra một nhánh HotFix ngoài
ReleaseTag
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.