Một phiên bản sản phẩm, chẳng hạn v1.0.0.100
, không chỉ thể hiện một bản phát hành sản xuất phần mềm duy nhất, mà còn giúp xác định các bộ tính năng và các giai đoạn hotfix cho sản phẩm nói trên. Ngay bây giờ tôi thấy hai cách để duy trì phiên bản gói / bản dựng / nhị phân cuối cùng của sản phẩm:
Kiểm soát phiên bản. Một tập tin ở đâu đó lưu trữ số phiên bản. Máy chủ xây dựng Tích hợp liên tục (CI) sẽ có một tập lệnh để xây dựng phần mềm sử dụng số phiên bản đã đăng ký này để áp dụng nó cho tất cả các lĩnh vực của phần mềm cần thiết (nhị phân, gói cài đặt, trang trợ giúp, tài liệu, v.v.).
Môi trường và / hoặc xây dựng các tham số. Chúng được duy trì bên ngoài kiểm soát phiên bản (nghĩa là chúng không được gắn với snapshot / tag / Branch). Các tập lệnh xây dựng phân phối và sử dụng số theo cùng một cách, tuy nhiên chúng chỉ nhận được giá trị khác nhau (nó được cung cấp cho tập lệnh xây dựng, thay vì để tập lệnh biết nơi lấy nó so với cây nguồn).
Vấn đề với cách tiếp cận đầu tiên là nó có thể làm phức tạp sự hợp nhất giữa các nhánh chính. Nếu bạn vẫn duy trì 2 bản phát hành song song của cùng một phần mềm, bạn sẽ giải quyết xung đột khi hợp nhất giữa hai dòng chính nếu phiên bản đã thay đổi trên cả hai kể từ lần hợp nhất cuối cùng.
Vấn đề với cách tiếp cận thứ hai là hòa giải. Khi bạn quay lại bản phát hành 1 năm trước, bạn sẽ chỉ dựa vào thông tin thẻ để xác định số phát hành của nó.
Trong cả hai trường hợp, có thể có một số khía cạnh nhất định của số phiên bản không được biết trước khi xây dựng CI. Ví dụ, bản dựng CI có thể được lập trình đặt vào thành phần thứ 4 thực sự là số bản dựng tự động (ví dụ: bản dựng thứ 140 trên nhánh). Nó cũng có thể là một số sửa đổi trong VCS.
Cách tốt nhất để theo kịp số phiên bản của phần mềm là gì? Các phần "đã biết" có nên luôn được duy trì trong VCS không? Và nếu vậy, các xung đột trên các nhánh chính có phải là một vấn đề không?
Ngay bây giờ, chúng tôi duy trì số phiên bản của mình thông qua các tham số được chỉ định và duy trì trong kế hoạch xây dựng CI (Atlassian Bamboo). Chúng tôi phải cẩn thận trước khi hợp nhất với master
chi nhánh của mình rằng các số phiên bản được thiết lập đúng trước khi xây dựng CI khởi động . Liên quan đến quy trình công việc Gitflow, tôi cảm thấy rằng nếu số phiên bản được theo dõi trong kiểm soát nguồn, chúng tôi có thể đảm bảo nó được thiết lập đúng khi chúng tôi tạo release
chi nhánh để chuẩn bị phát hành. QA sẽ thực hiện thử nghiệm tích hợp / khói / hồi quy cuối cùng trên nhánh này và sau khi đăng nhập, một sự hợp nhất sẽ master
diễn ra để báo hiệu cam kết phát hành.
version.txt
trong đó một phiên bản chứa một dòng duy nhất1.0.7
và phiên bản kia1.2.0
thực sự khó giải quyết? Nếu đây là xung đột duy nhất trong việc hợp nhất hai chi nhánh đã tách ra, tôi sẽ coi mình là người rất may mắn. Làm thế nào thường xảy ra? Nếu nó xảy ra, không phải là một điều tốt mà bạn buộc phải suy nghĩ về số phiên bản mà phiên bản hợp nhất nên có? (Xin lỗi vì đã sử dụng một cách mơ hồ từ phiên bản phiên bản.)