メインコンテンツまでスキップ

Warm pools

warm poolは、指定した数の RDE セッションを起動済みのアイドル状態に保ちます。プールからセッションを作成する場合は、新しいマシンの起動とセットアップの実行に必要な数分ではなく、数秒で済みます。セッションを作成するときと同じように、セッションを一度だけ記述し、プールサイズを設定します。Bitrise はその数のセッションをウォーム状態に保ち、リクエストに応じて 1 つを割り当てます。

次のように、セッションがすぐに必要な場合は warm pool を使用します。

  • 今すぐマシンが必要な AIエージェント。
  • 1 日に多数の似たセッションを開始するチーム。
  • レビュアーがクリックしてすぐにアプリが画面に表示されることを期待する、デバイスプレビューリンク。

Warm pools は、無料トライアルの workspaces では利用できません。

アルファ機能

Warm pools はアルファ版です。RDE UI の Alpha バッジがそれを示しています。プールの構成、取得したセッションをパーソナライズする方法、関連する CLI コマンド、MCP ツール、API エンドポイントは、予告なく後方互換性のない形で変更される場合があります。テンプレート、スクリプト、自動化の調整が必要になることを想定してください。

warm poolの仕組みClick to copy link​

warm poolは、保存されたセッション構成とプールサイズの2つの部分で構成されます。プールはworkspaceが所有します。

  • 構成には、セッション作成リクエストと同じフィールドが含まれます:template、そのSharedおよび On create 入力の値、有効にした機能フラグ、そしてスタック、マシンタイプ、クラスター、仮想デバイスに対する任意のオーバーライド。
  • プールサイズは、プールが起動した状態で保持するセッション数です。Bitriseがセッションを作成し、workspaceにworkspaceスクリプトがある場合はそれを実行し、続いてテンプレートの On create フックを実行して、セッションを準備完了の状態に保ちます。誰かが1つを取得すると、代わりのセッションが起動します。
  • サイズ0のプールはセッションを保持しませんが、構成プリセットとしては引き続き機能します。そこから取得すると、保存された構成からセッションが作成されます。

セッションを取得すると、プールのウォームセッションの1つが割り当てられます。Bitriseが名前を変更し、指定した名前、ラベル、自動終了ウィンドウを適用します。準備完了のセッションがまだない場合は、まだウォームアップ中のセッションが割り当てられ、そのセッションがあなたのセッションとして起動を完了します。プールにウォームセッションがまったくない場合は、代わりにBitriseがプールの構成からセッションを作成します。すべてのセッションは由来を記録します:取得されたセッションのウォーム状態はclaimed、オンデマンドで作成されたセッションのウォーム状態はcoldです。RDE UIのセッション一覧では、これらが Claimed と Built cold のバッジとして表示されます。

ウォームセッションは、取得されるのを待つ通常のセッションであり、待機中もマシン時間を消費します。誰かが取得するまでは、どのセッション一覧にも表示されず、誰も接続、変更、終了できません。プールのページでそのログを読んで、テンプレートの On create フックが動作することを確認できます。ウォームセッションには自動終了タイマーがありません。誰かが取得するか、プールが縮小された、または構成が変更されたためにBitriseが破棄するまで待機します。

プールを使用できるユーザーClick to copy link​

RDEアクセス権を持つworkspaceのメンバーは全員、プールを表示し、そこから取得し、管理できます。Workspace APIトークンで、CIからアクセスすることもできます。

プールは、テンプレートのSharedおよび On create 入力をプレーンな値として保存し、シークレットとしてマークされている場合は保存時に暗号化します。セッションを取得する人が On claim と On restore の入力を入力します。保存済み入力は個人用のため、プールから参照できません:プールが保存済み入力を使える特定の個人がいないためです。

取得したセッションの所有者Click to copy link​

プールから取得したセッションは、自分で作成したセッションと同様にあなたのものであり、あなただけが表示・管理できます。ウォームセッションは誰かが取得する前に起動されるため、取得されるまでは個人的な情報は何も含まれていません。取得すると、Bitriseが、指定した場合はSSHキーとClaude認証情報をセットアップし、GitHub連携をオンにしている場合はGitHubにログインし、その後、On claim 入力を使ってテンプレートの On claim フックを実行します。warm poolでのフックの使用を参照してください。

取得したセッションを代わりに共有するには、取得時にオーナーとして Workspace を選択します。すると、すべてのメンバーが Workspace sessions の下でそのセッションを表示・管理でき、あなたは作成者として記録されます。Workspace APIトークンで取得したセッションと、プレビューリンクで開かれるデバイスセッションは、常にworkspaceに属します。

プールの作成Click to copy link​

  1. Remote Dev Environmentsセクションで Warm pools を開き、New warm pool をクリックします。テンプレートのページでは、Create warm pool をクリックすると、テンプレートが選択済みの同じフォームが開きます。
  2. テンプレートを選択します。フォームには、そのテンプレートに必要な項目のみが表示されます:SharedおよびOn createの入力、機能フラグ、テンプレートがデバイスを起動する場合はデバイスセクション、そしてセッションフォームと同じ Override machine configuration スイッチです。
  3. Pool name を入力します。
  4. Pool size を設定します。
  5. Create warm pool をクリックします。

プールのページには、準備完了のセッション数とまだウォームアップ中のセッション数が表示されます。また、ウォームセッションを名前で一覧表示し、取得済みセッションとコールドセッションの累計数も表示します。

Bitriseは、セッション作成リクエストと同じ方法で構成を検証します。不明な入力、必須入力の不足、マシンタイプで実行できないデバイスは、保存時に拒否されます。ウォームセッションは実行中のセッションであるため、他のセッションと同様にworkspaceのセッション上限にカウントされます。workspaceが上限に達していてプールがサイズに到達できない場合、プールのページにエラーが表示され、プールは再試行を続けます。

セッションの取得Click to copy link​

New session フォームで、テンプレートを選択すると、Start from warm pool にそのプールが一覧表示され、プールが1つだけの場合は自動的に選択されます。プールを選択すると、構成セクションはプールによって固定されます。セッションに名前を付け、オーナー(デフォルトは Me)を選択し、自動終了ウィンドウを設定し、テンプレートに On claim と On restore の入力がある場合は入力します。プールのページにも、プールが選択済みのフォームを開く Claim a session ボタンがあります。

プールが構成を固定します。テンプレート、SharedまたはOn createの入力、機能フラグ、スタック、マシンタイプ、クラスター、デバイスも渡す取得リクエストは、無視されずに拒否されます。セッションごとに、名前、説明、ラベル、自動終了ウィンドウは引き続き選択できます。デバイスを起動するプールでは、インストールするアプリのビルドも選択できます。

プールを健全に保つClick to copy link​

Bitriseがすべてのプールを定期的にチェックし、サイズを維持します。知っておくべき点がいくつかあります:

  • 構成を編集するとウォームセッションが置き換えられます。 入力、機能フラグ、マシンまたはデバイスの設定を変更すると、Bitriseは古い構成でウォームアップされたセッションを破棄し、新しいセッションを起動します。このような変更を保存する前に、UIが警告します。プールの名前変更やサイズ変更は、ウォームセッションに影響しません。
  • テンプレートの編集も同様です。 プールはテンプレートに従うため、テンプレートのフックや変数を編集すると、プールのウォームセッションも置き換えられます。
  • 構成が壊れるとプールが一時停止します。 テンプレートの編集によって、プールが設定していない必須入力が追加されたり、プールが有効にしている機能フラグが削除されたりすることがあります。その場合、プールは構成エラーを表示し、修正するまでセッションの作成を停止します。プールの既存のウォームセッションは引き続き取得できます。
  • On create の失敗でプールが停止します。 After 3回連続で失敗すると、プールに Setup failed と表示され、ウォームアップを停止し、取得を拒否します。調査用に最後に失敗したマシンが保持され、Retry をクリックするとウォームアップが再開します。warm poolで On create が失敗した場合を参照してください。
  • マシンの失敗が繰り返されるとプールが一時停止します。 マシンの起動に失敗すると、プールは再試行するまでしばらく待機し、新しいマシンを起動し続けないようにします。プールのページに最後のエラーが表示されます。

スケジュールによるプールのスケーリングClick to copy link​

ウォームセッションはアイドル中もマシン時間のコストがかかるため、プールサイズは需要に必要な数に保ってください。サイズの変更は 1 回の呼び出しで行えるため、スケジュールを簡単に組めます。たとえば、営業時間に合わせてプールをウォームアップし、夕方に空にできます。Workspace API トークンを使った cron ジョブで実現できます。

0 8 * * 1-5 BITRISE_TOKEN=bitwat_… bitrise-cli rde warm-pool set-size ios-reviewers 3 --workspace WORKSPACE_ID -q
0 19 * * 1-5 BITRISE_TOKEN=bitwat_… bitrise-cli rde warm-pool set-size ios-reviewers 0 --workspace WORKSPACE_ID -q

サイズを 0 にすると、すべてのウォームセッションが破棄されますが、プール、その構成、およびそのプールで発行されたプレビューリンクは残ります。プールを削除すると、ウォームセッションが破棄され、そのプレビューリンクも無効になります。すでにプールから取得したセッションは通常のセッションであり、どちらの操作の影響も受けません。

プールのテンプレートが仮想デバイスを起動する場合、プールはデバイスも起動済みの状態に保ちます。このため、デバイスプレビューリンクは、アプリのダウンロードにかかる時間で開きます。プールを指定してリンクを発行すると、リンクが開かれるたびに、そのウォームデバイスの 1 つが取得されます。warm poolからのリンクの提供を参照してください。

デバイスプールから取得する場合は、アプリビルドをすぐにインストールできます。ビルドの URL を、セッションのアーティファクトとして渡します。デバイスはすでに実行中のため、セッションが割り当てられた時点でアプリがインストールされます。

プールの管理Click to copy link​

Warm pools ページには、workspaceのプールが一覧表示されます。プールのページから、サイズの変更、構成の編集、セッションの取得、削除ができます。CLIでは、bitrise-cli rde warm-pool list、view、update、set-size、retry、deleteで同じ操作ができ、APIではwarm poolエンドポイントで同じ操作ができます。

Workspaceのオーナーと請求を管理するメンバーも、すべてのプールとそのサイズを表示できます。プールは Usage ページとbitrise-cli rde warm-pool list --allに、workspaceのその他のRDE支出とともに表示されます。