Skip to content
Latchkey

エフェメラルCIとは? 新しいrunnerが重要な理由

エフェメラルCIは、すべてのjobに、jobが終わると捨てられるクリーンな使い捨てマシンを与える - どの実行も次を汚染できないように。

エフェメラルrunnerは1つのjobのために作られ、後で破棄され、状態を残さない。実行をまたいでファイル、cache、副作用を蓄積する長寿命runnerとは正反対だ。

「エフェメラル」の意味

新しい環境が単一のjobのためにプロビジョニングされ、そのjobを実行し、破棄される。それが書き込んだもの - 一時ファイル、インストールされたツール、漏れたプロセス - は何も次のjobに影響を与えるほど残らない。すべての実行が同じ既知のベースラインから始まる。

それが重要な理由

  • 状態漏れなし: あるjobが別のjobの環境を汚染できない。
  • 再現性: greenなbuildは、残った状態のためではなく、クリーンな状態から合格することを意味する。
  • セキュリティ: secretやcheckoutデータが共有マシンに残らない。
  • デバッグが容易: 失敗が「runnerをクリアしたら動く」ではなくなる。

トレードオフ

クリーンなマシンには何もcacheされていないため、エフェメラルrunnerはjobごとにcold startと依存関係インストールの税を払う。標準的な緩和策は、汚れた状態を共有せずに高価な部分を復元する外部cache(依存関係、Dockerレイヤー)だ。

エフェメラル vs 永続

永続runnerは状態が引き継がれるため速いが、その同じ状態が「runner #3でだけ通る」flakinessを引き起こす。ほとんどのチームは正しさのためにエフェメラルを選び、速度を取り戻すためにcacheを加える。

重要なポイント

  • エフェメラル = jobごとに新しい使い捨てマシン、後で破棄される。
  • 実行間の状態漏れを排除し、再現性とセキュリティを向上させる。
  • コストはcold startと繰り返される依存関係のインストールだ。
  • cacheは、汚れた共有状態を再導入せずに速度を回復する。

関連ガイド