Dựa trên kinh nghiệm của tôi với quản lý phụ thuộc cấp độ nền tảng doanh nghiệp phức tạp và phiên bản phát hành, tôi đã đến để đề xuất một cách tiếp cận tôi muốn gọi Phiên bản bán ngữ nghĩa .
Về cơ bản, nó được xây dựng từ Semantic Versioning 2.0 nhưng không hoàn toàn nghiêm ngặt.
Phân đoạn phiên bản bán ngữ nghĩa:
<primary.release.segment>[-<pre.release.segment>][+<post.release.segment>]
Định dạng phân đoạn phát hành chính:
MARKETTING.MAJOR.MINOR.PATCH
Mỗi phân đoạn nên cho phép chữ và số, nhưng số học thuần túy được khuyến nghị cho các thay đổi tăng dần hợp lý.
Giống như SemVer, tôi đề xuất các thành phần Major, Minor và Patch để thể hiện các tầng tương thích ngược, nhưng tôi cũng khuyên bạn nên chuẩn bị trước một thành phần Marketing . Điều này cho phép chủ sở hữu sản phẩm, tính năng sử thi / nhóm và mối quan tâm kinh doanh để vượt qua thành phần chính độc lập với mối quan tâm tương thích kỹ thuật.
Không giống như các câu trả lời khác, tôi không khuyên bạn nên thêm số Build vào phân khúc chính. Thay vào đó, hãy thêm Phân đoạn sau phát hành theo '+' (ví dụ: 1.1.0.0 + build.42). SemVer gọi siêu dữ liệu xây dựng này, nhưng tôi nghĩ Phân đoạn sau phát hành rõ ràng hơn. Phân đoạn này rất tốt để khai báo dữ liệu hậu tố là không liên quan đến thông tin tương thích trong Phân đoạn phát hành chính . Các bản dựng tích hợp liên tục của bạn sau đó có thể được cung cấp số bản phát hành trước đó được gắn thêm số bản dựng tăng dần đặt lại sau mỗi bản phát hành chính (ví dụ: 1.1.0.0 -> 1.1.0.0 + build.1 -> 1.1.0.0 + build.2 -> 1.1.0.1). Một số người thay thế thích đặt số sửa đổi svn ở đây hoặc git commit sha để dễ dàng liên kết với kho lưu trữ mã. Một tùy chọn khác là sử dụng phân đoạn hậu phát hành cho các hotfix và các bản vá, tho có thể đáng để xem xét thêm một thành phần phát hành chính mới cho điều đó. Nó luôn có thể bị rơi khi tăng thành phần bản vá, vì các phiên bản được căn chỉnh và sắp xếp một cách hiệu quả.
Ngoài các phân đoạn phát hành và sau phát hành, mọi người thường muốn sử dụng Phân đoạn tiền phát hành để chỉ ra các bản phát hành trước gần như ổn định như bảng chữ cái, betas và các ứng cử viên phát hành. Cách tiếp cận SemVer cho điều này hoạt động tốt, nhưng tôi khuyên bạn nên tách các thành phần số khỏi các phân loại số alpha (ví dụ: 1.2.0.0 + alpha.2 hoặc 1.2.0.0 + RC.2). Thông thường, bạn sẽ tăng phân khúc phát hành cùng lúc với việc thêm phân đoạn sau phát hành và sau đó thả phân đoạn phát hành trước khi bạn tiếp tục phân khúc phát hành chính của chúng (ví dụ: 1.0.1.2 -> 1.2.0.0-RC.1 - > 1.2.0.0). Các phân đoạn tiền phát hành được thêm vào để chỉ ra rằng phiên bản phát hành sắp ra mắt, thường chỉ là một bộ tính năng cố định để thử nghiệm và chia sẻ sâu hơn mà không thay đổi từng phút dựa trên nhiều cam kết hơn.
Vẻ đẹp của việc có tất cả các định nghĩa ngữ nghĩa này theo cách bao trùm hầu hết các trường hợp sử dụng là bạn có thể phân tích, sắp xếp, so sánh và tăng chúng theo cách tiêu chuẩn. Điều này đặc biệt quan trọng khi sử dụng các hệ thống CI cho các ứng dụng phức tạp với nhiều thành phần nhỏ được phiên bản độc lập (như các dịch vụ vi mô), mỗi hệ thống có phụ thuộc được quản lý riêng.
Nếu bạn quan tâm, tôi đã viết một trình phân tích cú pháp bán ngữ nghĩa bằng ruby . Tôi không chỉ cần sử dụng mẫu này mà còn có thể quản lý các ứng dụng khác đã sử dụng nó.