나는 우리의 수석 건축가 중 하나에 제안 된 빌드 시스템 (Gradle을 / Artifactory / 젠킨스 / 요리사)를 설명했다, 그는 나에게 코멘트를 만들어 내가 그 종류의 체중에에 정말 동의하지만, 경험이 충분가 아닙니다.
이 프로젝트는 다른 팀이 재사용 할 수 있도록 Java 라이브러리 (JAR)를 아티팩트로 빌드합니다. 버전 관리를 위해 다음의 의미 론적 접근 방식을 사용하고 싶습니다.
<major>.<minor>.<patch>
어디 patch
, 버그 / 긴급 수정을 나타냅니다 minor
이전 버전과 호환 버전을 나타내며, major
이 API 및 / 또는 이전 버전과 호환되지 않는 변화 중 하나 대규모 리팩토링을 나타냅니다.
전달이 필요한 한 개발자는 원하는 코드를 작성합니다. 이는 QA / TEST 환경에 대한 빌드를 트리거합니다. 일부 테스트 (일부 자동화, 일부 수동)가 실행되었습니다. 모든 테스트가 통과되면 프로덕션 빌드는 JAR을 사내 저장소에 게시합니다. 이 시점에서 JAR의 버전이 올바르게 지정되어야하며 build.number
CI 도구에서 자동으로 생성하여 제공 한 것을 사용 하여 패치 번호로 사용하는 것이 좋습니다.
따라서 버전 관리는 실제로 다음과 같습니다.
<major>.<minor>.<build.number>
다시 build.number
CI 도구에서 제공됩니다.
아키텍트는 CI 빌드 번호를 사용하는 것이 시맨틱 버전 관리의 "남용"이라고 말하면서 이것을 기각했다.
내 질문은 : 이것이 맞습니까? 그렇다면 왜 그렇습니까? 그렇지 않다면 왜 그렇지 않습니까?