Ich würde mir vorstellen, dass es eine inhärente Beziehung zwischen diesen Zweigen geben sollte, die das Problem der Versionsnummern angehen sollte.
Loslassen
Ich stelle mir vor, Sie könnten so etwas wie produktionsfertigen Code aus dem Entwicklungszweig in den Veröffentlichungszweig zusammenführen und dann eine Maven-Veröffentlichung durchführen (über Jenkins oder manuell). Dadurch werden die Versionsnummern automatisch zum nächsten Build übertragen. Sie fügen also den Code 1.4.7-SNAPSHOT in diesen Zweig ein, führen die Veröffentlichung durch und schneiden die Version 1.4.7 aus, und Maven setzt Ihre Arbeitskopie automatisch auf 1.4.8-SNAPSHOT um.
Aktualisieren der Baseline (optional)
Wenn Sie Ihren Trunk (oder Basiszweig usw.) noch nicht als Speicherort für Ihre Releases verwenden, sollten Sie den Trunk aktualisieren, sobald Sie eine Release abgeschlossen haben. Dies bedeutet, dass auch Ihre Versionsnummern aktualisiert werden. Dieser Schritt ist möglicherweise umstritten, wenn Sie nur den Release-Zweig als Basis betrachten.
Up-Merge von Baseline zu Dev Branch
Es ist wichtig, dass Ihre Entwicklungsabteilung mit dem tatsächlichen Produktionscode auf dem neuesten Stand ist . Sie müssen den Code von der Baseline (oder dem Release-Zweig, je nach Implementierung) bis zu Ihrem Entwicklungszweig zusammenführen. Dies ist in Ihrem Fall wichtig, da die POM-Änderungen, die während des Veröffentlichungsprozesses aufgetreten sind und die Version auf 1.4.8-SNAPSHOT geändert haben, in diesen Zweig übernommen werden.
Aufgrund meiner Lektüre (und der Prozesse in meiner Organisation) scheint dies ein ziemlich standardmäßiger und effektiver Einsatz von Maven-Releases und -Snapshots zu sein. Anstatt vollständig getrennte Versionsnummern in verschiedenen Zweigen beizubehalten, ist dies leicht zu erkennen dass jeder 1.4.7-SNAPSHOT-Build tatsächlich ein unmittelbarer Vorgänger des 1.4.7-Releases war. Sie sind verwandt. Ich würde sogar sagen, wenn Sie nicht zwischen diesen Zweigen hin- und herschmelzen, dass Sie sowohl SCM- als auch Maven-Versionierung falsch machen und sich dem Risiko aussetzen, gegen Code zu entwickeln, der nicht zur Produktion passt , führt Fehler wieder in die Produktion ein usw.
Überdenken Sie Ihren Ansatz.
Es ist sehr üblich, zB 1.4.2 für eine Release-Version und dann 1.4.3-SNAPSHOT für die Entwicklung zur nächsten zu verwenden.
Wenn Sie das Release 1.4.2 THEN warten müssen, verzweigen Sie es von dem Commit, das Ihr Artefakt 1.4.2 erzeugt hat.
Dann teilen Sie Jenkins den Speicherort Ihres Repositorys und den Namen des Zweigs mit, was dazu führt, dass ein Dateisatz ausgecheckt wird, und dann weisen Sie Jenkins an, maven in Ihrem Projekt zu verwenden, um ihn zu erstellen.
Hinweis: Ich habe festgestellt, dass es sehr vorteilhaft ist, eine einzige pom.xml-Datei zum Erstellen des eigentlichen Artefakts und eine weitere pom.xml-Datei zum Erstellen der eigentlichen Bits zu verwenden, die an den Kunden gesendet werden.
quelle