Tôi là thành viên của một nhóm phát triển với 5 nhóm, tổng cộng có khoảng 40 nhà phát triển. Chúng tôi đang theo phương pháp Scrum, với nước rút 3 tuần. Chúng tôi có một thiết lập tích hợp liên tục (Jenkins), với một đường ống xây dựng mất vài giờ (do các thử nghiệm tự động mở rộng). Về cơ bản, quá trình phát triển hoạt động tốt.
Tuy nhiên, chúng tôi quan sát thấy rằng sau một vài ngày vào giai đoạn nước rút mới, bản dựng của chúng tôi thường trở nên không ổn định và vẫn bị rung lắc cho đến khi "chấm dứt" chạy nước rút. Tác động bất lợi của việc này là các bước xây dựng ở xa đường ống, đặc biệt là UI- / Webtests không thực thi trong vài ngày (vì chỉ được kích hoạt trên bản dựng 'xanh'). Do đó, các lỗi mới được giới thiệu thường chỉ được phát hiện rất muộn trong giai đoạn nước rút.
- Mỗi cam kết được xác minh đối với một bộ thử nghiệm cơ bản. Sau khi được xác minh, thay đổi được đẩy thành chủ sau khi xem xét mã (Gerrit)
- Kiểm tra đơn vị cơ bản chạy cứ sau 30 phút, thời lượng dưới 10 phút
- Kiểm tra tích hợp chạy cứ sau 2h, thời gian 1h
- UI- / Webtests chạy trên các bài kiểm tra tích hợp thành công, thời lượng vài giờ
Tùy thuộc vào người chịu trách nhiệm cho sự ổn định của công trình trong giai đoạn nước rút (trách nhiệm đó được chuyển qua mỗi lần chạy nước rút), có thể có các "điểm dừng cam kết" trung gian để đưa công trình trở lại ổn định.
Vì vậy, chúng tôi muốn:
- Các nhóm phát triển của chúng tôi để phát triển và cam kết thay đổi trong giai đoạn nước rút không bị cản trở
- Quá trình xây dựng của chúng tôi phải từ bỏ nếu một bước xây dựng thất bại, vì các kết quả xây dựng tiếp theo có rất ít ý nghĩa
- Quá trình xây dựng của chúng tôi để cung cấp cho các nhà phát triển phản hồi chất lượng một cách kịp thời
Cho (2), các điểm (1) và (3) dường như mâu thuẫn với nhau. Có ai có một thực hành tốt làm thế nào để đối phó với điều này?
( Chúng tôi hiện đang nới lỏng điểm (2) và đang cho phép tiếp tục xây dựng ngay cả trên các bước xây dựng không thành công. Tôi không có bất kỳ phản hồi nào về việc điều đó ảnh hưởng đến chất lượng của chúng tôi như thế nào )
Cảm ơn, Simon
several hours
thì đó là vấn đề thực sự. nó biểu thị rằng giải pháp kết hợp quá lớn và quá rộng. Bạn nên tìm cách thành phần hóa giải pháp và sau đó có các đoạn mã nhỏ dưới dạng các gói (có sẵn theo cách này hay cách khác trong tất cả các ngôn ngữ chính trên tất cả các nền tảng). Do đó, mọi thay đổi sẽ chỉ đi vào các thành phần và sẽ được phát hiện nhanh hơn nhiều. Bản dựng đầy đủ về cơ bản sẽ chỉ đặt các thành phần đã được kết hợp lại với nhau và cũng sẽ nhanh hơn. Sau đó, bạn chỉ có thể chạy một số thử nghiệm để đảm bảo các thành phần phù hợp đã được giải quyết.