Skip to content
Latchkey

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に残しておきましょう。

関連ガイド