2

PowerShell スクリプトを使用して TeamCity ユーザー定義のパラメーター値を読み取る方法はありますか?

以下は私がやろうとしていることです。

TeamCity ビルド構成で次のパラメーターを既に作成しています

Variable Name           Variable Value
=============           ==============
variable1               ABC
variable2               XYZ

以下は、PowerShell ビルド ステップで使用している PowerShell スクリプトです。

    #Samplay array
    $Array = @("variable1","variable2","variable3","variable4","variable5")

    Foreach ($item in $Array)
    {
        $VariableValue = "%" + "$item" + "%"
        if ($VariableValue)
        {
            Write-Host "Found TeamCity Variable called '$item'. Corresponding variable value is '$VariableValue'"
        }
        else
        {
            Write-Host "There isn't any TeamCity variable called '$item3'. Aborting..."
            Exit -1
        }
    }

予想される出力は次のとおりです。

Found TeamCity Variable called 'variable1'. Corresponding variable value is 'ABC'
Found TeamCity Variable called 'variable2'. Corresponding variable value is 'XYZ'
There isn't any TeamCity variable called 'variable3'. Aborting...

%teamcityvariablename% 形式を使用して TeamCity 変数にアクセスできると思いました。しかし、これは機能していないようです。スクリプト引数にすべての変数をハードコーディングしたくありません。変数は常に変化するからです。PowerShell ビルドステップで TeamCity ユーザー定義パラメーター (構成パラメーター) を使用する方法を教えてください。前もって感謝します。

4

1 に答える 1

2

多くの検索とテストの結果、解決策を見つけました。まず、PowerShell スクリプト内から構成パラメーターの型にアクセスする方法がないようです。存在する場合、これを概説するドキュメントは見つかりませんでした。また、実験を行っても、これらのパラメーターにアクセスする方法が得られませんでした。したがって、パラメーターが構成パラメーターの種類である場合は、それらを環境パラメーターに変換する必要があります。

環境パラメーターはすべて、PowerShell のローカル実行スコープ内の環境変数として書き込まれます。env.ConnectionStringこれは、PowerShell スクリプト内などから TeamCity パラメーターにアクセスする必要がある場合、他の環境変数と同じようにアクセスできることを意味します。例:

#TeamCity populated the env:ConnectionString before running the script.   
$ConnectionString = $env:ConnectionString 

システム パラメーター タイプのパラメーターについては、これらにアクセスする方法もないと思いますが、間違っている可能性があります。システム パラメータを使用する必要はなかったので、これらへのアクセスを試す必要はありませんでした。

また、プロジェクトでは実際の PowerShell スクリプトを使用していることにも注意してください。TeamCity PowerShell ビルド ステップ内には、PowerShell コードを「ファイル」または「ソース コード」として実行するオプションがあります。PowerShell コードを定義するための TeamCity テキスト領域が与えられているため、「ソース コード」オプションの柔軟性が高いかどうかはわかりません。PowerShell でコードを実行する前にコードを解析することがありますが、私はこのアプローチをテストしていません。

この情報は一般的な知識かもしれませんが、多くの検索を行った後、この問題に対する簡単な答えを見つけることができませんでした. この情報の私の個人的な情報源は、試行錯誤です。実行された PowerShell スクリプト内でシステム、または構成、パラメーターにアクセスする方法を概説する追加情報を誰かが持っている場合は、以下に投稿してください。この回答を更新します。

于 2019-07-09T14:06:59.360 に答える