Wyjaśniłem proponowany system kompilacji (Gradle / Artifactory / Jenkins / Chef) jednemu z naszych starszych architektów, a on skomentował mnie, z czym się nie zgadzam, ale nie mam wystarczającego doświadczenia, aby naprawdę się zastanowić.
Ten projekt tworzy bibliotekę Java (JAR) jako artefakt do ponownego wykorzystania przez inne zespoły. W przypadku wersji chciałbym zastosować podejście semantyczne:
<major>.<minor>.<patch>
Gdzie patch
wskazuje na poprawki błędów / awaryjne, minor
wskazuje wersje kompatybilne wstecz i major
wskazuje na ogromne refaktoryzacje interfejsu API i / lub zmiany niezgodne wstecz.
Jeśli chodzi o dostawę, to jest to, czego chcę: programista popełnia kod; powoduje to kompilację środowiska QA / TEST. Niektóre testy są uruchamiane (niektóre zautomatyzowane, niektóre ręczne). Jeśli wszystkie testy zakończą się pomyślnie, kompilacja produkcyjna opublikuje plik JAR w naszym wewnętrznym repozytorium. W tym momencie plik JAR powinien być odpowiednio wersjonowany, a moim pomysłem było użycie tego, build.number
który jest automatycznie generowany i udostępniany przez nasze narzędzie CI, aby działał jako numer poprawki.
Tak więc wersjonowanie byłoby w rzeczywistości:
<major>.<minor>.<build.number>
Znów, gdzie build.number
zapewnia narzędzie CI.
Architekt odrzucił to, mówiąc, że użycie numeru kompilacji CI było „nadużyciem” wersjonowania semantycznego.
Moje pytanie brzmi: czy jest to poprawne, a jeśli tak, to dlaczego? A jeśli nie to dlaczego nie?