Windows runnerとは?Windowsプラットフォーム上のCI
Windows runnerはWindowsを実行するCI runnerで、Windowsプラットフォームを対象とするソフトウェア(.NET Framework、MSVC、Windowsネイティブアプリ)のビルドとテストに使われます。
ソフトウェアがWindows上で実行される必要がある、あるいはWindows専用のtoolchainを使う必要がある場合、Windows runnerが必要になります。Linuxより高価でプラットフォーム固有の癖がありますが、真にWindowsを対象とする場合は避けられません。
必要になるとき
Windows runnerは、Windows API、MSVCコンパイラ、従来の.NET Framework、Windowsコンテナ、あるいはWindows固有のテストに依存するビルドに必要です。Linuxのみを対象とするクロスプラットフォームコードには不要です。
コスト
ホスト型WindowsのminuteはLinuxのminuteのおよそ2倍のコストです。Windows runnerはプロビジョニングも遅くイメージも大きい傾向があるため、jobがLinuxの同等品より重く感じられることがあります。
プラットフォームの癖
- デフォルトのshell(PowerShell)とパス区切り文字が異なる。
- 多数の小さなファイルを扱うワークロードでファイルシステム操作が遅い。
- Linux runnerより大きなイメージと長い起動時間。
Windows CIの最適化
Windowsのminuteは高価でjobも重いため、cacheとright-sizingが効いてきます。本当にWindowsに依存するjobだけをWindows runnerで実行し、クロスプラットフォームの作業はより安価なLinuxに残しましょう。
コンテナ vs Windows runner
一部のWindows対象はWindowsコンテナを必要とし、それはWindows runnerでのみ動作します。ただし多くの.NETワークロードは今やLinux上でクロスプラットフォームに動作します。Windowsのminuteを払う前に、ビルドが本当にWindowsカーネルを必要とするか確認しましょう。
重要なポイント
- Windows runnerは.NET、MSVC、WindowsネイティブのビルドのためにWindowsを実行します。
- 本当にWindowsを対象とするjobだけがこれを必要とします。
- WindowsのminuteはコストがおよそLinuxの2倍で、プロビジョニングも遅くなります。
- クロスプラットフォームの作業はより安価なLinux runnerに残しておきましょう。