toi5
Senior Member
Tôi quỡn trả lời thêm mấy câu sau theo kiến thức đụt của tui :
- Số lượng commits nhiều nhưng CI chạy lâu, giải quyết thế nào? Tức nếu CI chạy test quá lâu thì dần dần nó sẽ trở thành bottleneck.
=> Lâu thì phải fix, phải xem lại tests mình viết thế nào, chạy có phù hợp ngữ cảnh ko. ví dụ validate cái field chỉ cho nhập số mà phải lên tận UI test để check là ko dc rồi , vì unit test đã check dc rồi , nhá . Chạy test quá lâu có thể ko phải là vấn đề của execution, mà vấn đề time wait để chờ CI nó feedback lại cho devs sau khi push PR thôi, vấn đề quá lâu này giải quyết = cách plan lại tests nào cần chạy, chạy lúc nào, chạy vào thời điểm nào blah blah
- Làm sao duy trì được tính ổn định ở trunk/mainline/master? Tức bad commit có thể block trunk/mainline/master mà mọi người vẫn cắm đầu cắm cổ push. Làm sao để developer viết code trên stable base commit (sau khi rebase) mà ko bị ảnh hưởng bởi bad commit? Làm sao deal với bad commit?
=> Khi tests của fence đã ổn áp thì lập tức notify thằng dev mày commit code mà static/lint tests báo code style tè le, tests thì failed abc là ngăn dc liền. Còn việc branch nhiều test failed mà vẫn còn cho phép commit là thuộc phạm vi thằng quản lý cái branch đó ko block lại hay review lại. Muốn deal với bad commit thì: 1. thằng dev phải test bên local nó, 2. tests phải tin cậy, 3. khi commit lên phải tests, 4. tests liên tục
- Bad test thì sao? Làm cách nào để tránh bad test blocking trunk/mainline/master?
=> Bad test theo fence là gì, là tests ko hợp, tests validate tùm lum, tests chạy lâu, tests ko đúng hay gì . Test có bad hay ko là do vấn đề viết test
- Tại sao cần release branch? Tại sao ko dùng main branch? Source control như git chẳng hạn có thể tag commit dưới dạng “release xyz”.
=> Theo model câu hỏi ở trên chắc là xài trunk development model rồi , nên mới có 1 main branch. Mà model này phải đảm bảo test nhiều.
- Patching process. Về lý thuyết thì nếu có continuous deployment pipeline thì sẽ liên tục ra version mới, lúc đó patching là fix forward nếu good commit trên trunk/mainline được deploy (hoặc rollback deployment đợi good commit ra). Nhưng nếu có release branch thì patching là 1 vấn đề khác.
=> Ko rõ fence hỏi gì xD
Tóm lại là tui trả lời chung chung vậy thôi chứ ko details hết dc )