このスキルは、以前のテスト実行構成とワークフロー(Flank または gcloud firebase test から)を最新のリソース指向の gcloud
beta device-run CLI サーフェスに変換するのに役立ちます。
コマンドとリソース構造のマッピング
デバイスラン CLI は、コマンドをリソース(devices、software-versions、sessions)ごとに整理します。
1. デバイス カタログ(devices)
- デバイスを一覧表示する:
- レガシー:
gcloud firebase test android/ios models list - 新規:
gcloud beta device-run devices list [--filter="..."] - 例:
gcloud beta device-run devices list --filter="platform:android"
- レガシー:
- デバイスの説明:
- レガシー:
gcloud firebase test android/ios models describe {MODEL} - 新規:
gcloud beta device-run devices describe {DEVICE} - 例:
gcloud beta device-run devices describe redfin-30
- レガシー:
- デバイスの容量とフリートの可用性を確認する:
- レガシー:
gcloud firebase test android/ios list-device-capacities - 新規: デバイス リソース(
availability.capacityとavailability.available)に直接埋め込まれます。gcloud beta device-run devices describe {DEVICE}を使用して検査するか、gcloud beta device-run devices list --filter="availability.capacity=CAPACITY_HIGH"を使用して直接フィルタします。
- レガシー:
2. ソフトウェア バージョン(software-versions)
- サポートされているソフトウェア バージョン(Xcode と Android Test Orchestrator)のリスト:
- レガシー:
gcloud firebase test ios xcode-versions list - 新規:
gcloud beta device-run software-versions list
- レガシー:
- ソフトウェア バージョンを説明する:
- 新規:
gcloud beta device-run software-versions describe {SOFTWARE_VERSION} - 例:
gcloud beta device-run software-versions describe xcode-16-4
- 新規:
3. 自動化セッション(sessions)
- Android 計測を送信:
- レガシー:
gcloud firebase test android run --type=instrumentation ... - 新規:
gcloud beta device-run sessions submit instrumentation ...
- レガシー:
- iOS XCTest を送信:
- レガシー:
gcloud firebase test ios run --type=xctest ... - 新規:
gcloud beta device-run sessions submit xctest ...
- レガシー:
- セッションの完了を待機:
- 以前のバージョン: 同期 CLI ブロックのみ
- 新規:
gcloud beta device-run sessions wait {SESSION}
- セッションの説明 / 検査:
- 以前のバージョン: Firebase コンソール / Cloud ツールの結果でウェブリンクを表示する
- 新規:
gcloud beta device-run sessions describe {SESSION} [--full]
- 過去のセッションを一覧表示する:
- 以前のバージョン: ウェブ コンソールでマトリックスの履歴を表示する
- 新規:
gcloud beta device-run sessions list
- セッションをキャンセル:
- Legacy: Web コンソールのみ(CLI コマンドなし)
- 新規:
gcloud beta device-run sessions cancel {SESSION}
フラグ マッピング リファレンス テーブル
次の表は、以前の Firebase Test Lab と Flank のパラメータと、gcloud beta device-run でサポートされている同等のパラメータのマッピングを示しています。
| テストタイプ | 特徴グループ | 以前のパラメータ(firebase / Flank) | ターゲット パラメータ(device-run) |
形式 / 変換ロジック |
|---|---|---|---|---|
| 共通(Android、iOS) | コア パラメータとアセット | 側面 --project
|
--project
|
標準の Google Cloud グローバル フラグ(--project=PROJECT_ID)またはアクティブな Google Cloud CLI 構成。 |
| 共通(Android、iOS) | コア パラメータとアセット | --client-details
|
--labels
|
key=value ペアの辞書。 |
| 共通(Android、iOS) | デバイスの構成とターゲティング | --device
model={M},version={V}
|
--device={M}-{V}
|
モデルと OS バージョンを --device ID 文字列にマッピングします。1 つのフラグで複数のデバイスのカンマ区切りリストを受け入れます(例:--device=mediumphone-arm-32,shiba-36)。 |
| 共通(Android、iOS) | 実行制御と不安定さ | --async
|
--async
|
1 対 1 でマッピングします。コマンドはデフォルトで同期のままです。すぐに戻るには、これを渡します。gcloud beta device-run sessions wait
<SESSION_ID> でモニタリングまたは待機します。 |
| 共通(Android、iOS) | 実行制御と不安定さ | --num-flaky-test-attempts
{R}
|
--flaky-test-attempts {A}
|
整数。再試行回数 $R$ を試行回数の上限 $A = R + 1$ に変換します(デフォルトは 1)。 |
| 共通(Android、iOS) | 実行制御と不安定さ | なし | --flaky-test-parallel-retry
|
Boolean。テストの失敗を並行して再試行するかどうか(デフォルトは順次)。 |
| 共通(Android、iOS) | 実行制御と不安定さ | なし | --flaky-test-retry-level
|
文字列。再試行レベル: shard または test(デフォルトは shard)。 |
| 共通(Android、iOS) | 出力とストレージ | --results-bucket
|
--bucket-name
|
テスト出力アーティファクトがアップロードされるバケット(デフォルトは gs://[PROJECT_ID]-devicerun)。 |
| 共通(Android、iOS) | 出力とストレージ | --results-dir
|
自動的に管理される | カスタム サブディレクトリの設定はサポートされていません。すべてのテスト アーティファクトは、--bucket-name で指定されたバケット内の automation/sessions/{session_id}/ に自動的に整理されます。 |
| 共通(Android、iOS) | 出力とストレージ | --record-video
|
--video
|
有効な値: always または on-failure。 |
| 共通(Android、iOS) | 出力とストレージ | --directories-to-pull
|
--paths-to-pull
|
実行後にデバイスから取得するパスのリスト。 |
| 共通 Android | コア パラメータとアセット | --app
|
--apps
|
List。複数のアプリ APK/AAB が指定されている場合は、それらすべてを --apps に渡します。 |
| 共通 Android | コア パラメータとアセット | --additional-apks
|
--apps
|
List。追加のリスト値をメインの --apps リストに直接マージします。 |
| 共通 Android | コア パラメータとアセット | --obb-files
|
--other-files-to-push
|
SOURCE=DEST 形式の辞書。OBB ファイルをデバイスパス(/sdcard/Android/obb/{package_name}/)に直接プッシュします。 |
| 共通 Android | コア パラメータとアセット | --other-files
|
--other-files-to-push
|
SOURCE=DEST 形式の辞書。 |
| 共通 Android | デバイスの設定とターゲティング | --device locale={L}
|
--locale={L}
|
デバイスのロケールを最上位の --locale フラグ(language-region など)にマッピングします。--locale=en-US)を指定できます。 |
| 共通 Android | デバイスの設定とターゲティング | --device orientation={O}
|
--orientation={O}
|
デバイスの画面の向きを最上位の --orientation フラグ(portrait または landscape)にマッピングします。 |
| 共通 Android | デバイスの設定とターゲティング | なし | --coordinates
|
仮の現在地情報の座標
(latitude,longitude、例:37.4220,-122.0841)。 |
| 共通 Android | 実行制御と不安定さ | --grant-permissions
|
自動デフォルト | 自動。実行時の権限はデフォルトで自動的に付与されます(--grant-permissions=all と同等)。 |
| 一般的な Android | 出力とストレージ | なし | --dumpsys
|
デバイスから dumpsys を収集します(always または on-failure)。 |
| 一般的な Android | 出力とストレージ | なし | --bugreport
|
デバイスからバグレポートを収集します(always または on-failure)。 |
| Android Instrumentation | コア パラメータとアセット | --type=instrumentation
|
sessions submit instrumentation
|
サブコマンド構造によって、--type フラグではなくテストタイプが決定されます。 |
| Android Instrumentation | コア パラメータとアセット | --test
|
--test
|
インストルメンテーション テストを含むバイナリ ファイルのパス。 |
| Android Instrumentation | 実行制御と不安定さ | --timeout
|
--instrumentation-timeout
|
期間(例: 10m、20s、1h)。有効な範囲: 1m~3h(デフォルトは 5m)。 |
| Android Instrumentation | 実行制御と不安定さ | --num-uniform-shards {N}
|
--sharding-option=uniform--uniform-sharding-count={N}
|
フラグ構成により、均一シャーディング戦略が有効になります(有効なカウント範囲: 1 ~ 20(物理)、1 ~ 200(仮想))。 |
| Android Instrumentation | 実行制御と不安定さ | 側面 --shard-time {S}
|
--sharding-option=smart--smart-sharding-target-duration={S}
|
目標実行時間でスマート シャーディングを有効にします(例: 2m、10m、1h)。有効な範囲: 2m~1h。 |
| Android Instrumentation | 実行制御と不安定さ | 側面
--smart-flank-gcs-path
|
--smart-sharding-record-name={name}--bucket-name={bucket}
|
automation/smart-sharding/ の --bucket-name 内にあるシャーディング レコード YAML の名前(拡張子を除く)。 |
| Android Instrumentation | 実行制御と不安定さ | 側面 --max-test-shards
{N}
|
--smart-sharding-max-shard-count={N}
|
スマート シャーディングが有効になっている場合、最大シャード境界にマッピングされます(0 ~ 20 個の物理シャード、0 ~ 200 個の仮想シャード)。 |
| Android Instrumentation | テストランナーとターゲット | --test-runner-class
|
--test-runner-class
|
完全修飾ランナークラス。 |
| Android Instrumentation | テストランナーとターゲット | --test-targets
|
--test-targets
|
package、notPackage、class、notClass、annotation、notAnnotation、size などのキーをサポートする辞書。testfile や notTestfile などの形式はサポートされません。 |
| Android Instrumentation | テストランナーとターゲット | --use-orchestrator
|
--orchestrator-version
|
auto(デフォルトのオーケストレーター)または特定のバージョン文字列(例: 1.6)。 |
| Android Instrumentation | テストランナーとターゲット | --environment-variables
|
--additional-test-options
|
テストランナーに渡されるオプションのディクショナリ。--test-targets でサポートされている形式は、ここでは使用できません。 |
| 一般的な iOS | コア パラメータとアセット | --additional-ipas
|
--additional-apps
|
テスト実行前にデバイスにインストールする .ipa ファイルのリスト。 |
| 一般的な iOS | コア パラメータとアセット | --other-files
|
--other-files-to-push
|
SOURCE=BUNDLE_ID:DEVICE_PATH 形式の辞書。 |
| 一般的な iOS | 出力とストレージ | --directories-to-pull
|
--paths-to-pull
|
テスト後にプルするファイルまたはディレクトリのリスト(BUNDLE_ID:DEVICE_PATH 形式)。 |
| iOS XCTest のみ | コア パラメータとアセット | --type=xctest
|
sessions submit xctest
|
サブコマンド構造は、--type フラグではなくテストタイプを決定します。 |
| iOS XCTest のみ | コア パラメータとアセット | --test
|
--test
|
iOS アプリと XCTest ファイルを含む ZIP ファイルのパス。 |
| iOS XCTest のみ | 実行制御と不安定さ | --timeout
|
--xctest-timeout
|
XCTest の実行に許可される最大時間(有効な範囲: 1m~1h、デフォルトは 5m)。 |
| iOS XCTest のみ | テストランナーとターゲット | --xctestrun-file
|
--xctestrun-file
|
カスタム .xctestrun ファイルのパス。 |
| iOS XCTest のみ | テストランナーとターゲット | --xcode-version
|
--xcode-version
|
使用する Xcode のカタログ ID またはバージョン文字列(例: xcode-16-4 または 16.4)。software-versions list を使用してクエリします。 |
実行可能な翻訳ガイダンス
Firebase Test Lab と Flank の構成をデバイス実行に変換するには、次のガイドラインに沿って操作します。
1. デバイスの仕様
gcloud beta device-run では、--device はモデルとバージョン ID の文字列のカンマ区切りのリストを受け取ります。デバイスごとに 1 つの --device フラグが必要だった Firebase とは異なり、device-run では 1 つのフラグで複数のデバイスを指定できます。デバイスの言語 / 地域、画面の向き、モック座標は、別々の最上位フラグを使用して指定します。
- ❌
--device model=MediumPhone.arm,version=32,locale=en,orientation=portrait - ✅
--device=mediumphone-arm-32 --locale=en-US --orientation=portrait
2. 辞書とリスト
カンマ区切りのフラグをリスト(--apps、--paths-to-pull)または Key-Value ディクショナリ(--other-files-to-push、--additional-test-options)に変換します。
- ❌
--other-files /sdcard/file1.txt=local/file1.txt,/sdcard/file2.txt=local/file2.txt - ✅
--other-files-to-push local/file1.txt=/sdcard/file1.txt,local/file2.txt=/sdcard/file2.txt
3. シャーディング戦略
- 均一シャーディング:
--sharding-option=uniformを設定します。--uniform-sharding-count={count}を設定します(物理の場合は 1 ~ 20、仮想の場合は 1 ~ 200)。
- スマート シャーディング:
--sharding-option=smartを設定します。--smart-sharding-target-duration={duration}を設定します(例:2m、10m、1h(有効な範囲:2m~1h)。--smart-sharding-record-name={record_name}を設定します(automation/smart-sharding/の--bucket-name内の YAML トラッキング レコードを指します)。--smart-sharding-max-shard-count={max_count}を設定します(省略可能な上限: 物理の場合は 0 ~ 20、仮想の場合は 0 ~ 200)。
4. 非同期実行
- 非同期と待機:
--asyncが指定されている場合、CLI は作成されたセッション ID をすぐに返します。CI/CD ワークフローでセッションの完了を待つには、gcloud beta device-run sessions wait <SESSION_ID>を使用します。
5. 宣言型 YAML 構成(--flags-file)
複雑な構成や、長いターミナル コマンドではなくバージョン管理されたファイルの維持を好むチームの場合、gcloud は汎用の --flags-file 引数プリプロセッサを提供します($ gcloud topic flags-file を参照)。
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
!注 キーに
--が必要な理由:gcloudは、YAML キーをコマンドライン フラグとして CLI パーサーに直接挿入します。YAML ファイル内のすべてのキーには、--という接頭辞を付ける必要があります(例:--device:、--apps:)。--がないと、gcloudは認識されない位置引数として拒否します。
次に、複数値のリストとディクショナリのフラグを示す例を示します。
# device-run-flags.yaml
--device:
- mediumphone-arm-32
- shiba-36
--apps:
- app-debug.apk
- test-helper.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
--paths-to-pull:
- /sdcard/screenshots
- /sdcard/coverage.ec
--additional-test-options:
coverage: "true"
clearPackageData: "true"
翻訳例
これらの例を使用して、既存の Firebase Test Lab と Flank の構成をデバイス実行に変換します。
Firebase Test Lab からデバイス実行
firebase cmd:
gcloud firebase test android run \
--app=app-debug.apk \
--test=app-debug-androidTest.apk \
--device model=shiba,version=36 \
--timeout=5m \
--num-flaky-test-attempts=2 \
--directories-to-pull=/sdcard/screenshots \
--environment-variables coverage=true
次のように変換されます。
gcloud beta device-run sessions submit instrumentation \
--device=shiba-36 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--instrumentation-timeout=5m \
--flaky-test-attempts=3 \
--paths-to-pull=/sdcard/screenshots \
--additional-test-options coverage=true
デバイス実行への Flank 構成
flank options(flank.yml):
gcloud:
app: app-debug.apk
test: app-debug-androidTest.apk
device:
- model: mediumphone-arm
version: 32
shard-time: 120
smart-flank-gcs-path: gs://my-bucket/automation/smart-sharding/timing-record.yaml
次のように変換されます。
オプション 1: CLI の直接呼び出し(推奨)
最新の CLI コマンドに直接変換します。
gcloud beta device-run sessions submit instrumentation \
--device=mediumphone-arm-32 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--bucket-name=my-bucket \
--sharding-option=smart \
--smart-sharding-target-duration=2m \
--smart-sharding-record-name=timing-record
オプション 2: 宣言型 YAML フラグファイル(--flags-file)
シェル スクリプト文字列ではなく、バージョン管理された YAML ファイルで構成を維持する場合は、gcloud の組み込み --flags-file 機能を使用します。
# device-run-flags.yaml
# Note: gcloud requires keys to start with '--'
--device:
- mediumphone-arm-32
--apps:
- app-debug.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
CLI で送信します。
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
(コマンドラインでフラグを追加またはオーバーライドすることもできます。たとえば、--async を追加するなど)。
デバイス カタログの検出
listing & inspecting devices:
# List all available Android devices
gcloud beta device-run devices list --filter="platform:android"
# Filter devices with high fleet capacity (replaces legacy list-device-capacities)
gcloud beta device-run devices list --filter="availability.capacity=CAPACITY_HIGH"
# Describe a specific device (OS versions, form factors, orientation, locales, capacity)
gcloud beta device-run devices describe redfin-30
CI/CD のエンドツーエンド セッション ライフサイクル
submitting, waiting, and inspecting sessions:
# 1. Submit asynchronously and capture session ID
SESSION_ID=$(gcloud beta device-run sessions submit instrumentation \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--device=mediumphone-arm-32 \
--async \
--format="value(name)")
# 2. Wait for session completion in CI/CD pipeline
gcloud beta device-run sessions wait "$SESSION_ID"
# 3. Describe session summary (or pass --full for complete details)
gcloud beta device-run sessions describe "$SESSION_ID"
# 4. Cancel a running session if aborted
gcloud beta device-run sessions cancel "$SESSION_ID"