ephemeral runner とは?1 つの job、そして消える
ephemeral runner は、新しいマシンでちょうど 1 つの job を実行し、その後破棄されます - 次の build を汚染する状態は一切残りません。
ephemeral runner は、正しさとセキュリティのゴールドスタンダードです。すべての job が同一のクリーンなベースラインから始まるため、グリーンはグリーンを意味します - 「この特定のマシンの残留状態のおかげでグリーン」ではありません。
「ephemeral」の意味
runner は 1 つの job のためにプロビジョニングされ、それを実行し、破棄されます。一時ファイル、インストールされたツール、リークしたプロセス、cache された secret はすべてマシンとともに消えます。次の job は同じイメージから真新しい runner を得ます。
なぜ flakiness を防ぐのか
永続的な runner は状態を蓄積します - 中途半端な cache、詰まったプロセス、ディスクの肥大化 - これが build を、どのマシンに割り当てられるかによって成功したり失敗したりさせます。ephemeral runner は共有された履歴がないため、この「runner #3 では動く」というバグの類をなくします。
セキュリティ上の利点
secret や checkout されたソースコードが、次の job(または攻撃者)に見つけられるのを待って共有マシンに居座ることはありません。パブリックリポジトリでは、永続的な runner は常設の標的になるため、ephemeral runner が強く推奨されます。
トレードオフ: cold start
新しいマシンには cache が何もないため、ephemeral runner は job ごとにプロビジョニングと依存関係インストールの税を払います。標準的な対処は、外部 cache に加えて、事前起動された runner の warm pool を用意し、job が到着した瞬間にマシンが準備できているようにすることです。
Latchkey ではデフォルトで ephemeral
Latchkey の runner は ephemeral です - それぞれ 1 つの job、その後破棄 - しかし warm pool から提供されるため、cold start の待ちなしでクリーンな状態が得られ、さらに cache で高コストな部分を復元します。
重要なポイント
- ephemeral runner は新しいマシンで 1 つの job を実行し、その後破棄されます。
- 実行間の状態リークと、それに起因する flakiness をなくします。
- secret やコードを残さないことでセキュリティを向上させます。
- warm pool と cache が、新しいマシンの cold start コストを相殺します。