Tôi đã đọc qua nhiều câu hỏi ở đây về SO liên quan đến vấn đề này, nhưng tôi thực sự không tìm được lời khuyên nào phù hợp với hoàn cảnh của chúng tôi. Tôi đã thừa hưởng luồng công việc này và tôi đang cố gắng làm cho nó tốt hơn.Quy trình phát triển Web SVN
thiết lập của chúng tôi
- mã PHP cơ sở (Kohana nói riêng)
- cơ sở mã quyền hạn ~ 60 trang web, mỗi mẫu duy nhất (tức là 60 QA [Quality Assurance] miền quá)
- mỗi trang web có hồ sơ A cho các tài sản và tài nguyên khác nhau (tức là 8 bản ghi A cho mỗi tên miền)
- 3 nhà phát triển
- 3 nhà thiết kế
- nhà phát triển có VMware hình ảnh của máy chủ sản xuất để phát triển địa phương
- nhà thiết kế không
- chia sẻ máy chủ phát triển thể chất dùng để bảo đảm chất lượng, một post-commit cập nhật giữ máy chủ này tại các HEAD hiện tại của thân cây bất cứ lúc nào
- sản xuất máy chủ, cập nhật để pha trộn và kết hợp các phiên bản khác nhau tùy thuộc vào những tính năng live
làm việc của chúng tôi chảy
- Nhà phát triển hoạt động cục bộ cho đến khi một tính năng nhất định hoàn tất và sau đó cam kết toàn bộ đối tượng địa lý vào thân cây cho QA nội bộ.
- Nhà thiết kế chỉ thực hiện các thay đổi nhỏ đối với CSS/hình ảnh/mẫu. Họ cam kết trực tiếp vào thân cây, QA thay đổi của riêng họ và cập nhật các tệp tương ứng trên máy chủ sản xuất, nói chung, ngay sau khi QA của họ.
- Khi các tính năng sẵn sàng phát trực tiếp, máy chủ sản xuất được cập nhật theo cách thủ công thành số sửa đổi thích hợp cho mỗi tệp có liên quan đến đối tượng địa lý. Đôi khi điều này là đơn giản, lần khác nó khá lông (rất nhiều các cuộc gọi
svn log
để tìm phụ thuộc ngược dòng).
vấn đề của chúng tôi
- Với ba nhà phát triển khác nhau làm việc trên các tính năng khác nhau mà cần số tiền khác nhau của QA, chúng ta thấy mình chạy vào các vấn đề phụ thuộc thượng nguồn một cách thường xuyên.
- Tại bất kỳ thời điểm nào, chúng tôi không có cách nào để xác định các tính năng nào có trên máy chủ sản xuất và không có tính năng nào.
svn status -u
sẽ hiển thị cho chúng tôi những tệp nào không được cập nhật, nhưng thường không phải là hình ảnh rõ ràng về các tính năng.
Những gì tôi biết
- Một số vấn đề của chúng tôi có thể khắc phục bằng việc có một chi nhánh sản xuất. Chúng tôi ít nhất có thể theo dõi các tính năng nào đang được thêm vào sản xuất và khi nào, mặc dù điều này sẽ không giải quyết được các vấn đề phụ thuộc ngược dòng.
- Chi nhánh tính năng là một tùy chọn và chúng tôi đã thử điều đó trong quá khứ.Do thực tế là phần mềm của chúng tôi yêu cầu 60 miền QA cho mỗi chi nhánh, chúng tôi gặp phải các vấn đề quản lý quy trình tại đó. Ví dụ, việc tạo ra 480 (60 tên miền x 8 bản ghi cho mỗi tên miền) Một bản ghi cho mỗi chi nhánh tính năng.
- Chi nhánh nhà phát triển cũng là một tùy chọn, nhưng thời gian QA tính năng của chúng tôi thay đổi. Tôi chắc chắn không thể nói rằng một tính năng trước đó sẽ hết QA trước khi tôi cần phải cam kết điều gì đó khác.
Upstream phụ thuộc Ví dụ
- Developer Một bổ sung thêm một tính năng slideshow mới trong cả admin và front-end.
- Nhà phát triển B thêm tính năng phản hồi mới trong cả quản trị viên và giao diện người dùng.
- Cả hai tính năng này được đan xen với logic Mô hình/bộ điều khiển vị trí, do đó, các thay đổi được thực hiện cho các tệp được liên kết đó để tính đến cả hai tính năng mới.
- Tính năng trình chiếu vào QA, nhưng được giữ lại bởi một số giám sát phát triển hoặc phạm vi leo.
- Tính năng phản hồi chuyển vào QA và chuyển mà không gặp vấn đề gì.
- Chúng tôi muốn theo dõi dòng thời gian và đẩy tính năng phản hồi vào sản xuất, nhưng chúng tôi không thể thực hiện trực tiếp vì cả hai tính năng đều yêu cầu thay đổi đối với mô hình/bộ điều khiển vị trí. Đó là, chúng tôi không thể chỉ làm một
svn update file1 file2 file3
. - Lưu ý:Đây là một ví dụ đơn giản và có thể làm việc xung quanh bằng cách thực hiện một số hợp nhất ngược. Thông thường, các vấn đề của chúng ta phức tạp hơn điều này.
Multi-site Thông tin Cấu trúc
- Chúng tôi có một số chủ đề về cấu trúc được xác định trước, bao gồm các quan điểm, hình ảnh, file CSS, JS vv
- Mỗi trang web được gán một chủ đề.
- Vì lý do xây dựng thương hiệu và khả năng mở rộng, mỗi trang web có thể ghi đè chế độ xem chủ đề bằng chế độ xem tùy chỉnh hoặc bao gồm các tệp CSS/JS bổ sung cho trang web bổ sung.
Tôi chắc chắn có một số người khác ở đó đã gặp khó khăn với các vấn đề tương tự và tôi hy vọng nhận được thông tin chi tiết từ những người thông minh trên Internet. Xin vui lòng đặt câu hỏi nếu một cái gì đó tôi nói có vẻ rõ ràng như bùn!
Chỉ cần có câu hỏi, QA có nghĩa là gì? –
Có vẻ như vấn đề chính là phần mềm của bạn được cho là mô-đun, nhưng bạn đang cố gắng nhận ra rằng trên lớp tệp chứ không phải lớp ứng dụng. Bạn nên làm cho customizability này một phần rõ ràng của ứng dụng của bạn, kiểm soát thông qua các tập tin cấu hình, và chỉ duy trì một phiên bản của cơ sở mã có thể được đẩy ra cho tất cả các máy chủ cùng một lúc. Điều đó sẽ đơn giản hóa mọi thứ rất nhiều. – deceze
@ Brad lmao, tôi đang chuyển tiếp bài đăng này đến người đứng đầu QA của chúng tôi, cô ấy nghĩ rằng không ai trong số các nhà phát triển biết được QA là gì. lol. –