2017-05-04 2 views
0

Iきた「ライブラリ」の下にタコ変数 - 名前タコの出力変数とそれらにアクセスする

1. DatabaseExceptions 
2. ReportsExceptions 
3. ApplicationExceptions 

そして、私はステップとタコに私のプロジェクト「デプロイメント・プロセス」の設定をしたと>「変数セット」変数

1. Database 
2. Reports 
3. Application 
4. Send Email 

上記変数は、スクリプト内の例外の特定のステップのpredeploy.ps1を使用して呼び出される「のPowerShell」スクリプトを使用して、例外が設定されています。

最後のステップ(電子メールを送信)で、特定の変数に情報が含まれているかどうかをチェックして、例外変数の情報を電子メールで送信しようとしました。私は

<h2>Deployment Steps</h2> 
<ol> 
    #{each step in Octopus.Step} 
     #{if step.Status.Code} 
      <li>#{step | HtmlEscape} &mdash; 
       #{if Step.Name == "Database"} 
        #{if Octopus.Action[Database].Output.DatabaseExceptions} 
         <pre>#{Octopus.Action[Database].Output.DatabaseExceptions}</pre> 
        #{/if} 
       #{/if} 
       #{if Step.Name == "Reports"} 
        #{if Octopus.Action[Reports].Output.ReportsExceptions} 
         <pre>#{Octopus.Action[Reports].Output.ReportsExceptions}</pre> 
        #{/if} 
       #{/if} 
       #{if Step.Name == "Application"} 
        #{if Octopus.Action[Application].Output.ApplicationExceptions} 
         <pre>#{Octopus.Action[Application].Output.ApplicationExceptions}</pre> 
        #{/if} 
       #{/if} 
      </li> 
     #{/if} 
    #{/each} 
</ol> 

データベースとレポートスクリプトがエラーを持っていると私の出力は次のようにこれを下回るが正しい見えます(「HTMLなど身体」)のチェックボックスをチェックして、送信メールのステップ本体でこれをやっている

です:

Deployment Steps 
1. Database — Exception on processing DB scripts - info:... 
2. Reports — Exception on processing Reports - info:... 
3. Application 
4. Send Email 

そして、私の質問を予想通りまた、私のステップ名として以下のような何かを行うことが可能と私の変数名の を開始するには、電子メールテンプレート内で可能ではないようです残念ながら

<h2>Deployment Steps</h2> 
<ol> 
    #{each step in Octopus.Step} 
     #{if step.Status.Code} 
      <li>#{step | HtmlEscape} &mdash; 
        #{if Octopus.Action[#{step.Name}].Output.#{step.Name}Exceptions} 
         <pre>#{Octopus.Action[#{step.Name}].Output.#{step.Name}Exceptions}</pre> 
        #{/if} 
      </li> 
     #{/if} 
    #{/each} 
</ol> 

答えて

1

同じです。 Octopusのサポートでthis threadを参照してください。

またちょうど注意することは、あなたが必要なすべてのステップで同じ出力変数名を使用することができ、それがステップごとに異なるスコープを持つことになり、すなわち

Set-OctopusVariable -name "Exceptions" -value $someValue 

、潜在的解決策は、別のを持っている可能性があり電子メールステップのためにexceptionsを準備するスクリプトステップ。

$exceptions = "" 
$OctopusParameters.GetEnumerator() | Where-Object { $_.Key -like '*Output.Exceptions*' } | % { 
    Write-Host " $($_.Key) - $($_.Value)" 
    $exceptions += $_.Value + "`r`n" 
} 

Set-OctopusVariable -name "ExceptionsToEmail" -value $exceptions 

そして1は、ステップをループする必要がなく、電子メールの段階で変数を使用することができます:何かのような上述したように1つが、

<pre> 
    Exceptions: 
    #{Octopus.Action[Prep Email Output].Output.ExceptionsToEmail} 
</pre> 

更新ソリューション

同じ出力変数名をステップ間で共有していたため、別個のスクリプトステップを設ける必要がなく、ソリューションを単純化することができました。すべての電子メールテンプレートで行われることになります。

Database - database exception occured 
Reports - reports exception occured 
Application - some application exception occurred 
Some other step - Succeeded 
Send email - Succeeded 
+0

こんにちは、アレックス、私は返事が遅れについて本当にすみません:電子メールのような出力につながる

#{each action in Octopus.Action} <strong>#{action.Name}</strong> #{if action.Output.Exceptions} <p> - #{action.Output.Exceptions}</p> #{/if} #{unless action.Output.Exceptions} - Succeeded #{/unless} #{/each} 

を。あなたの答えは本当にありがたいです。これは私の電子メール通知を変更するのに多少役立ちます。もう一度ソリューションに感謝します。 –

関連する問題