Ich war eine vorgeschlagene Build - System (Gradle / Artifactory / Jenkins / Chef) zu einem unserer leitenden Architekten erklären, und er machte mir einen Kommentar , dass ich irgendwie nicht zustimmen, aber ich bin nicht erfahren genug , um wirklich Wiegen am.
In diesem Projekt wird eine Java-Bibliothek (JAR) als Artefakt erstellt, die von anderen Teams wiederverwendet werden kann. Für die Versionierung möchte ich den semantischen Ansatz von:
<major>.<minor>.<patch>
Wobei patch
auf Bug- / Notfall-Fixes, minor
auf abwärtskompatible Releases und major
auf massive Überarbeitungen der API und / oder auf abwärts inkompatible Änderungen hingewiesen wird.
Was die Lieferung betrifft, möchte ich Folgendes: Ein Entwickler schreibt einen Code fest. Dies löst einen Build für eine QA / TEST-Umgebung aus. Einige Tests werden ausgeführt (einige automatisiert, einige manuell). Wenn alle Tests bestanden sind, veröffentlicht ein Produktions-Build die JAR für unser internes Repo. Zu diesem Zeitpunkt sollte die JAR-Datei ordnungsgemäß versioniert sein. Meiner Meinung nach sollte build.number
die von unserem CI-Tool automatisch generierte und bereitgestellte JAR-Datei als Patch-Nummer verwendet werden.
Somit wäre die Versionierung tatsächlich:
<major>.<minor>.<build.number>
Auch hier wird wo build.number
vom CI-Tool zur Verfügung gestellt.
Der Architekt lehnte dies mit der Begründung ab, die Verwendung der CI-Build-Nummer sei ein "Missbrauch" der semantischen Versionierung.
Meine Frage ist: Ist das richtig und wenn ja, warum? Und wenn nicht, warum nicht?