PowerShell
PowerShell ビルドランナーは、PowerShell スクリプトを実行するように特別に設計されています。
PowerShell 統合を担当するプラグインは、GitHub(英語) でオープンソース化されています(英語)。
クロスプラットフォーム PowerShell
クロスプラットフォーム PowerShell(PowerShell コア(英語))は、Windows、macOS、Linux でサポートされています。プラットフォーム用の PowerShell パッケージ(英語)をダウンロード(英語)して、TeamCity エージェントにインストールします。
PowerShell Desktop と PowerShell Core の並行インストールは、Windows でサポートされています。
ビルドエージェントにインストールされている PowerShell の検出
起動時に、TeamCity エージェントは、Program Files
および Windows
ディレクトリなどの標準の場所で PowerShell インストールを検索します。 teamcity.powershell.detector.search.paths
エージェントプロパティでカスタムの場所を指定できるため、エージェントはこのディレクトリ(およびその子)でも PowerShell を検出できます。
複数の場所を一覧表示するには、それらのパスを ;
で区切ります。
PowerShell の設定
オプション | 説明 |
---|---|
バージョン | TeamCity がサポートしている PowerShell バージョンのリスト。これは |
PowerShell ランモード | x64 マシンで希望の実行モードを選択します。 バージョン バージョンを指定してください(たとえば、1.0 または 2.0)。エージェントにインストールされているバージョンと比較され、適切な要件が追加されます。Core エディションの場合は、下限として使用されます。デスクトップ版では、正確なバージョンが使用されます( バージョンフィールドが空白のままの場合、バージョン要件の下限は追加されず、PowerShell のデスクトップエディションでは プラットフォーム プラットフォームのビット数を選択します。
版 使用する PowerShell エディションを選択します。
|
標準エラー出力を次のようにフォーマットします。 | ランナーによるエラー出力の処理方法を指定します。
|
作業ディレクトリ | ビルド作業ディレクトリへのパスを指定します。 |
スクリプト | スクリプトを TeamCity に直接入力するか、スクリプトへのパスを指定するかを選択します。
|
スクリプト実行モード | PowerShell スクリプトの実行モードを指定してください。デフォルトでは、PowerShell は任意の |
スクリプト引数 | スクリプト実行モードオプションが外部ファイルから .ps1 スクリプトを実行するに設定されている場合に使用できます。 PowerShell スクリプトに引数として渡されるビルドパラメーターを指定します。 |
追加コマンド行パラメーター | |
Docker の設定
PowerShell ステップで Docker のサポートを有効にするには、-Dteamcity.docker.runners=jetbrains_powershell
内部プロパティを使用して TeamCity サーバーを実行します。
このセクションでは、ビルドステップの実行に使用される Docker イメージを指定できます。
現在の制限
Docker で実行するには、PowerShell 実行可能ファイルを PATH に追加する必要があります。
Docker を使用してビルドステップを実行する場合、Docker 関連のビルドエージェント要件のみがビルドに適用されます。
PowerShell ビルドステップでのエディションの選択は、使用されている実行可能ファイルに影響します(デスクトップの場合は
powershell.exe
、コアの場合はpwsh
)。<Auto> のデフォルトは
pwsh
(Core)です。カスタム PowerShell 実行可能ファイルを指定するには、
teamcity.powershell.virtual.executable
構成パラメーターを、提供されたイメージ内のこの実行可能ファイルの絶対パスに設定する必要があります。Docker ラッパーの現在の制限により、Windows システムで実行される Linux コンテナーは許可されません。
既知の問題
docker-compose
コマンドが PowerShell デスクトップバージョン 5.1.17763 以降を介して実行された場合、ビルドログに誤検知の警告しかないにもかかわらず、PowerShell スクリプトがエラーで失敗する可能性があります。
この問題を回避するには、代わりに PowerShell コアを使用することをお勧めします。または、--log-level ERROR
属性を追加して、docker-compose
コマンドのログレベルを制限することもできます。
TeamCity との相互作用
PowerShell を使用してサービスメッセージを介して TeamCity と対話する場合は、注意が必要です。PowerShell は、コンソールに書き込まれた文字列を Write-Output
、Write-Error
などのコマンドでラップする傾向があります(TW-15080(英語) を参照)。この動作を回避するには、Write-Host
コマンドを使用するか、バッファー長を手動で調整します。
エラー処理
ゼロの終了コードが常に呼び出し元に返される PowerShell の問題により、TeamCity はスクリプトが正しく実行されたかどうかを常に検出できるわけではありません。スクリプトの実行エラーの検出に役立ついくつかのアプローチをお勧めします。
手動で例外をキャッチし、明示的に終了コードを返す
PowerShell プラグインは、powershell.exe
の cmd ラッパーを使用しません。これにより、明示的な終了コードを返すことが可能になります。try { # your code here } Catch { $ErrorMessage = $_.Exception.Message Write-Output $ErrorMessage exit(1) }ビルド失敗条件の設定と追加 :
構文エラーと例外が存在する場合、PowerShell はそれらをstderr
に書き込みます。TeamCity をビルドに失敗させるには、エラー出力オプションをError
に設定し、エラー出力でビルドに失敗するビルド失敗条件を追加します。ビルドログの特定のメッセージでビルドに失敗しました :
ビルドログの特定のメッセージ(「POWERSHELLERROR」など)でビルドが失敗するビルド失敗条件を追加します。$ErrorMessage = "POWERSHELL ERROR" try { # your code here } Catch { Write-Output $ErrorMessage exit(1) }
出力処理
PowerShell からの非 ASCII 出力を正しく処理するには、PowerShell 側と TeamCity 側の両方で正しいエンコードを設定する必要があります。
一時ファイル
TeamCity PowerShell プラグインはエントリポイントとして一時ファイルを使用します。これらのファイルはビルド一時フォルダーに作成され、PowerShell ビルドステップが完了した後に削除されます。ファイルを保持するには、powershell.keep.generated
または teamcity.dont.delete.temp.files
構成パラメーターを true
に設定します。
開発リンク
PowerShell サポートはオープンソースのプラグインとして実装されています。開発リンクについてはプラグインのページ(英語)を参照してください。
関連ページ:

ビルドランナー
ビルドランナーは TeamCity の一部であり、特定のビルドツール(Ant、MSBuild、コマンドラインなど)との統合を可能にします。ビルド構成では、ビルドランナーは、ビルドを実行してその結果を報告する方法を定義します。各ビルドランナーには 2 つの部分があります。Web UI を介して構成され

Kotlin DSL
XML 形式のバージョン管理で設定を保存することに加えて、TeamCity では(Kotlin 言語に基づいて)DSL に設定を保存できます。バージョン管理に保存された DSL を使用すると、プログラムで設定を定義できます。Kotlin は静的に型指定されるため、IDE で自動補完機能を自動的に受け取ります。これにより、利用可能な API オプションの発見がはるかに簡単になります。TeamCity での Kotlin DSL の使用に関するブログ投稿シリーズを確認してください。Kotlin DS...