Próbuję zastąpić zmiennej # {port} podczas wdrażania przy użyciu OctopusDeploy.Możę to zrobić, jeśli bezpośrednio dodać go w moim App.Config w następujący sposób:
<services>
<service name="SampleService" behaviorConfiguration="ServiceBehaviour">
<host>
<baseAddresses>
<add baseAddress="http://localhost:#{port}/SampleService/" />
</baseAddresses>
</host>
..
</service>
Czy istnieje sposób, aby dodać tu domyślny port (np25555, aby programiści mogli z niego korzystać bez zastępowania # {portu} zawsze), ale nadal określają OctopusDeploy, że ten konkretny port musi zostać zmodyfikowany? (Korzystam z wdrożeń dla wielu dzierżawców)
Odpowiedzi:
1 dla odpowiedzi № 1Możesz użyć funkcji transformacji XML plików konfiguracyjnych w połączeniu z wdrożeniem Octopus.
Ośmiornica sama może uruchomić te transformacje. Podczas kompilacji kodu zmieniany jest plik app.config [applicationName].exe.config
Jeśli utworzysz plik o nazwie [applicationName].exe.release.config
i dodaj to do twojego pakietu, możesz użyć tego samego stylu transformacji, który normalnie używałbyś w transformacjach web.config, w tym pliku. Jeśli Octopus widzi plik o nazwie *.release.config
uruchomi wszelkie transformacje podczas procesu wdrażania.
Alternatywnie Ten blog zawiera instrukcje rozszerzenia projektu, dzięki czemu można użyć możliwości transformacji plików web.config w plikach app.config.
Możesz zrobić to na kilka sposobów. Miej w sobie "podstawową" wartość zakodowaną app.config
następnie Zmienna Ośmiornicy jako transformacja w app.release.config
. Podczas budowania i pakowania kodu, dopóki używana jest konfiguracja "wydania", transformacja zostanie uruchomiona, a zakodowana wartość zostanie zastąpiona przez kompilację i dodana do pakietu.
Lub możesz zrobić to na odwrót, mieć mocno zakodowaną wartość w app.debug.config
oraz zmienną Octopus w pliku app.config. Gdy programista uruchomi kompilację debugowania, zmienna zostanie zastąpiona przez wartość w pliku debug.config.
1 dla odpowiedzi nr 2
Obsługa ośmiornicy if
i unless
w zmiennych substytucjach (docs: http://docs.octopusdeploy.com/display/OD/Variable+Substitution+Syntax)
Oznacza to, że możesz zastosować wartość domyślną ze względną łatwością.
Po pierwsze, jeśli zmienna istnieje, użyj go:
#{if port}#{port}#{/if}
Po drugie, jeśli zmienna nie istnieje, użyj wartości domyślnej:
#{unless port}25555#{/unless}
Po prostu połącz je razem:
#{if port}#{port}#{/if}#{unless port}25555#{/unless}