Tôi đã giải thích một xây dựng hệ thống đề xuất (Gradle / Artifactory / Jenkins / Chef) đến một trong những kiến trúc sư cao cấp của chúng tôi, và ông đã thực hiện một lời nhận xét với tôi rằng tôi loại không đồng ý với, nhưng tôi không đủ kinh nghiệm để thực sự kiểm tra trọng lượng trên.
Dự án này xây dựng một thư viện Java (JAR) như một vật phẩm để được các nhóm khác sử dụng lại. Để tạo phiên bản, tôi muốn sử dụng cách tiếp cận ngữ nghĩa của:
<major>.<minor>.<patch>
Trong đó patch
chỉ ra các sửa lỗi / khẩn cấp, minor
chỉ ra các bản phát hành tương thích ngược và major
chỉ ra các phép tái cấu trúc lớn của API và / hoặc các thay đổi không tương thích ngược.
Theo như giao hàng ở đây là những gì tôi muốn: một nhà phát triển cam kết một số mã; điều này kích hoạt việc xây dựng môi trường QA / TEST. Một số thử nghiệm được chạy (một số tự động, một số thủ công). Nếu tất cả các thử nghiệm vượt qua, thì một bản dựng sản xuất sẽ xuất bản JAR cho repo nội bộ của chúng tôi. Đến thời điểm này, JAR phải được phiên bản chính xác và suy nghĩ của tôi là sử dụng build.number
công cụ CI được tạo tự động và cung cấp để hoạt động như số bản vá.
Do đó, phiên bản thực sự sẽ là:
<major>.<minor>.<build.number>
Một lần nữa, nơi build.number
được cung cấp bởi công cụ CI.
Kiến trúc sư đã bác bỏ điều này, nói rằng sử dụng số xây dựng CI là một "lạm dụng" phiên bản ngữ nghĩa.
Câu hỏi của tôi là: điều này có đúng không, và nếu vậy, tại sao? Và nếu không, tại sao không?