2017-02-02 8 views
0

私はOctopus Deployプロジェクトを使用して、ターゲットマシン上のWindowsサービスとしてパッケージを正常にデプロイします。実際のサービスを展開する前に、対象のアカウントが適切なポートでリッスンできるようにするための手順がいくつかあります。Octopus Deployのプロジェクトから変数を読み込みます。

現時点では、展開手順のスクリプトに情報(ポート番号など)がハードコードされています。私はハードコーディングを避けるために変数を使う方法を知っています。しかし、実際には、デプロイメントプロジェクトではなく、サービス自体に「所属」する変数があります。

展開中のパッケージから情報を読み取り、その情報をOctopusで変数として使用する方法はありますか?実際のパッケージ展開前の展開手順はありますか?

答えて

0

あなたが望むものを達成するための一方通行(それほどエレガントではないが)は、Output Variablesを使用すると思います。これはオクトパスからもblog postといいですね。

あなたのパッケージには、Octopusの出力変数をポート番号に設定する専用のPSスクリプトを用意することができます。 g。

Set-OctopusVariable -name "PortNumber" -value "8080" 

あなたは、基本的なあなたがパッケージからスクリプトを実行する設定することができます(例えば、「SetVariables」という名前の)ステップ「スクリプトの実行」でこのスクリプトを実行できます。

そして、あなたのことが可能、さらに展開プロセスでタコ変数バインディング構文を使用して、任意の段階からこの変数を取得:

#{Octopus.Action[SetVariables].Output.PortNumber} 

またはPS構文:

$portNumber = $OctopusParameters["Octopus.Action[SetVariables].Output.PortNumber"] 

それが大幅にプロセスをデプロイ複雑化し、タコに、名前をステップ変数読み込みスクリプト/使用状況の場所からセッタースクリプトから追加の依存関係が追加されますので、私は本当にこのアプローチのようにしない理由事があります。

私はおそらく、設定変換のようなパラメータの範囲を指定するより堅牢な方法に固執するか、ターゲットマシンのようなより広い領域に範囲を設定するだけです。それが明らかに可能ならば。

関連する問題