Ja sa snažím nahradiť # {port} premennú počas nasadenia pomocou OctopusDeploy.
<services>
<service name="SampleService" behaviorConfiguration="ServiceBehaviour">
<host>
<baseAddresses>
<add baseAddress="http://localhost:#{port}/SampleService/" />
</baseAddresses>
</host>
..
</service>
Existuje spôsob, ako tu môžem pridať predvolený port (povedzme25555, takže vývojári ho môžu používať bez toho, aby museli nahradiť # {port} vždy), ale stále určujú, že tento konkrétny port musí byť upravený? (Používam nasadenia viacerých nájomníkov)
odpovede:
1 pre odpoveď č. 1Môžete použiť funkciu transformácie XML konfiguračných súborov v spojení s nasadením Octopus.
Tieto transformácie môže spúšťať samotný Octopus. Keď kompilujete váš kód, app.config sa premenuje [applicationName].exe.config
Ak vytvoríte súbor s názvom [applicationName].exe.release.config
a pridajte to do svojho balíka potom môžete použiť rovnaký štýl transformácie, ktorý by ste normálne používali v transformáciách web.config, v tomto súbore. Ak Octopus vidí súbor s názvom *.release.config
počas procesu zavádzania bude spúšťať akékoľvek transformácie.
alternatívne Tento blog obsahuje pokyny na rozšírenie vášho projektu, takže môžete použiť transformačnú schopnosť súborov web.config v súboroch app.config.
Takže by ste to mohli urobiť niekoľkými spôsobmi. Majte pevnú kódovanú hodnotu vo vás "základňa" app.config
potom majú premennú Octopus ako transformáciu v app.release.config
, Keď vytvoríte a zabalíte svoj kód, pokiaľ použijete konfiguráciu "release", transformácia bude oheň a pevná kódovaná hodnota bude nahradená vašou zostavou a pridaná do balíka.
Alebo by ste to mohli urobiť opačne, mať pevne zakódovanú hodnotu v app.debug.config
a premenná Octopus v app.config. Keď vývojár spustí ladenie, zostavenie premennej by bolo nahradené hodnotou v debug.config.
1 pre odpoveď č. 2
Chobotnice podporuje if
a unless
v premenných substitúciách (dokumenty: http://docs.octopusdeploy.com/display/OD/Variable+Substitution+Syntax)
To znamená, že môžete použiť predvolené nastavenie relatívne ľahko.
Po prvé, ak premenná existuje, použite ju:
#{if port}#{port}#{/if}
Po druhé, ak premenná neexistuje, použite predvolenú hodnotu:
#{unless port}25555#{/unless}
Takže ich skombinujte:
#{if port}#{port}#{/if}#{unless port}25555#{/unless}