Wir erstellen Pakete für mehrere Bereitstellungsumgebungen mit TeamCity-Server und OctoPack. Das Problem besteht darin, dass der Tentacle-Agent die neueste Version des Pakets wählt, also das gleiche (neueste) Paket, das in allen Umgebungen bereitgestellt wird. Hier ist die Zusammenfassung unserer Einrichtung:Wie kann Octopus die Paketversion in mehreren Umgebungen bereitstellen?
- Umgebungen DEV und STAGE;
- Deployment zu DEV wird von Git "Dev" Zweig ausgelöst;
- Deployment zu STAGE wird vom Git "Stage" -Abzweig ausgelöst;
- OctoPack ist konfiguriert, Pakete zu generieren MyProduct.1.0.0.dev-% Build_counter% für DEV Build-Konfiguration;
- OctoPack ist so konfiguriert, dass die Pakete MyProduct.1.0.0.% Build_counter% für die STAGE-Build-Konfiguration generiert werden.
- TeamCity ist so konfiguriert, dass OctoPack-Artefakte (NuGet-Pakete) über seinen NuGet-Feed verfügbar gemacht werden;
- Octopus-Projekt ist so konfiguriert, dass Pakete mit der NuGet-ID MyProduct aus dem TeamCity NuGet-Feed bereitgestellt werden.
Also, was passiert ist, dass seit DEV häufiger werden Builds, sie größer% build_counter% haben, und STAGE bekommen keine Chance auf einen Einsatz seiner eigenen Pakete zu bekommen - Octopus Tentakel preferes Pakete mit 1,0. 0.dev- * Suffix.
Dies muss ziemlich häufig Szenario sein, aber ich habe keinen einfachen Weg gefunden, es zu lösen.
Ich denke, du meinst „Teamcity ist so konfiguriert, Pacakges zu erzeugen“ und nicht Octopus?Einige andere Tipps: Verwenden Sie eine andere Versionsnummer für STAGE und DEV (und MASTER), die es auf lange Sicht leichter machen wird. Zum Beispiel ist in unserem Entwickler die Versionsnummer 0.0.0.x, und in Master haben wir 1.0.0.x. Die korrekteste Version wäre, dass dev auf 2.0.0.x und master auf 1.0.0.x gesetzt wurde, und wenn dev bereit ist, freigegeben zu werden und mit dem Master-Master zusammengeführt zu werden, wird er auf 2.0.0.x und dev erhöht zu 3.0.0.x. Du kannst es dir so vorstellen, wie Dev die Zukunft ist und Meister ist, was jetzt in prod ist. –