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?
Ein Grund dafür ist, dass der Patch möglicherweise mehrere Builds erfordert. Wenn Sie also Version 5.7 haben und ihn auf 5.7.1 patchen möchten, aber Ihre ersten 2 Bugfixes nicht erstellt werden können, wenn sie an das CI-System gesendet werden, werden Sie es sein bei 5.7.3 bevor du deinen ersten Patch veröffentlicht hast!
Die Antwort ist, einfach 4 Ziffern zu verwenden (wie es bei Microsoft-Systemen der Fall ist). Die vierte ist eine Build-Nummer und wird "nur zu Informationszwecken" verwendet. Im Allgemeinen geben die Benutzer die Versionsnummer des Repositorys an (wenn sie SVN oder TFS oder ähnliches verwenden). Dies ist sehr hilfreich, da Sie überprüfen können, mit welchem genauen Commit die Binärdateien erstellt wurden. Wenn Sie so etwas nicht haben, ist die CI-Build-Nummer eine vernünftige Annäherung (da Sie hoffen, Ihr CI-System kann sich die Build-Nummern merken und sie mit dem Repo-Verlauf verknüpfen, aber Sie sind nicht auf das CI angewiesen System erinnert sich an sie - Sie können niemals alte Builds löschen).
Zu beachten ist, dass das Microsoft-Schema für die Versionsverwaltung die dritte Position für Build-Nummern verwendet. Chrome verwendet nur eine Nummer. Ubuntu verwendet das Datum. Es gibt keinen "Standard" , außer dass alle Zahlen erhöht werden müssen.
quelle