התכונה הזו עוזרת לתרגם הגדרות וזרימות עבודה של הפעלות בדיקה מדור קודם (מ-Flank או מ-gcloud firebase test) לממשק ה-CLI המודרני של gcloud
beta device-run, שמבוסס על משאבים.
מיפוי של מבנה הפקודות והמשאבים
ממשק ה-CLI של הרצה במכשיר מארגן את הפקודות לפי משאב: devices, software-versions ו-sessions:
1. קטלוג המכשירים (devices)
- List Devices:
- גרסה קודמת:
gcloud firebase test android/ios models list - חדש:
gcloud beta device-run devices list [--filter="..."] - לדוגמה:
gcloud beta device-run devices list --filter="platform:android"
- גרסה קודמת:
- Describe Device:
- גרסה קודמת:
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):
- גרסה קודמת:
gcloud firebase test ios xcode-versions list - חדש:
gcloud beta device-run software-versions list
- גרסה קודמת:
- Describe Software Version:
- חדש:
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 ...
- גרסה קודמת:
- Submit iOS XCTest:
- גרסה קודמת:
gcloud firebase test ios run --type=xctest ... - חדש:
gcloud beta device-run sessions submit xctest ...
- גרסה קודמת:
- המתנה לסיום הסשן:
- קודם: חסימת CLI סינכרונית בלבד
- חדש:
gcloud beta device-run sessions wait {SESSION}
- Describe / Inspect Session:
- מדור קודם: הצגת קישור לדף אינטרנט אחר בתוצאות של מסוף Firebase / Cloud Tool
- חדש:
gcloud beta device-run sessions describe {SESSION} [--full]
- List Past Sessions:
- גרסה קודמת: צפייה בהיסטוריית המטריצה במסוף האינטרנט
- חדש:
gcloud beta device-run sessions list
- ביטול הסשן:
- Legacy: Web console only (no CLI command)
- חדש:
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
|
מילון של צמדי מפתח=ערך. |
| נפוצות (Android & iOS) | הגדרת המכשיר וטירגוט | --device
model={M},version={V}
|
--device={M}-{V}
|
ממפה את הדגם ואת גרסת מערכת ההפעלה ל---device
מחרוזת מזהה. מקבל רשימה מופרדת בפסיקים של כמה מכשירים בדגל אחד (לדוגמה,
--device=mediumphone-arm-32,shiba-36). |
| נפוצות (Android & iOS) | בקרה על ביצוע בקשות ועל תנודתיות | --async
|
--async
|
מפות Google 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
|
בוליאני. האם לנסות שוב הרצת בדיקות שנכשלו במקביל (ברירת המחדל היא הרצה רציפה). |
| נפוצות (Android & iOS) | בקרה על ביצוע בקשות ועל תנודתיות | לא רלוונטי | --flaky-test-retry-level
|
מחרוזת. ניסיון חוזר של רמה: shard או test (ברירת המחדל היא shard).
|
| נפוצות (Android & iOS) | פלט ואחסון | --results-bucket
|
--bucket-name
|
קטגוריה שבה מועלים פריטי פלט של בדיקות (ברירת המחדל היא gs://[PROJECT_ID]-devicerun). |
| נפוצות (Android & iOS) | פלט ואחסון | --results-dir
|
ניהול אוטומטי | אין תמיכה בהגדרת ספריות משנה מותאמות אישית. כל תוצרי הבדיקה מאורגנים באופן אוטומטי בספרייה automation/sessions/{session_id}/ בתוך דלי האחסון שצוין על ידי --bucket-name. |
| נפוצות (Android & iOS) | פלט ואחסון | --record-video
|
--video
|
הערכים התקפים: always או on-failure.
|
| נפוצות (Android & iOS) | פלט ואחסון | --directories-to-pull
|
--paths-to-pull
|
רשימה של נתיבים לשליפה מהמכשיר אחרי ההרצה. |
| Android נפוץ | פרמטרים ונכסים מרכזיים | --app
|
--apps
|
רשימה. אם מספקים כמה קובצי APK או AAB של אפליקציות, צריך להעביר את כולם אל --apps. |
| Android נפוץ | פרמטרים ונכסים מרכזיים | --additional-apks
|
--apps
|
רשימה. מיזוג ערכים נוספים ברשימה
ישירות לרשימה הראשית --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}
|
השם של רשומת ה-sharding ב-YAML (לא כולל הסיומת) בתוך --bucket-name מתחת ל-automation/smart-sharding/. |
| 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
|
הנתיב לקובץ ה-ZIP שמכיל את אפליקציית iOS ואת קובצי XCTest. |
| iOS XCTest בלבד | בקרה על ביצוע בקשות ועל תנודתיות | --timeout
|
--xctest-timeout
|
משך הזמן המקסימלי המותר להרצת XCTest (הטווח התקין: 1m עד 1h, ברירת המחדל היא 5m). |
| iOS XCTest בלבד | הפעלת בדיקות ויעדים | --xctestrun-file
|
--xctestrun-file
|
הנתיב לקובץ ה- .xctestrun המותאם אישית. |
| iOS XCTest בלבד | הפעלת בדיקות ויעדים | --xcode-version
|
--xcode-version
|
מזהה הקטלוג או מחרוזת הגרסה של Xcode לשימוש (לדוגמה, xcode-16-4 או 16.4). שאילתה באמצעות software-versions list. |
הנחיות לתרגום שניתן ליישם
כדי לתרגם את ההגדרות של Firebase Test Lab ו-Flank להרצה במכשיר, פועלים לפי ההנחיות הבאות:
1. מפרטי מכשיר
ב-gcloud beta device-run, --device מקבלת רשימה מופרדת בפסיקים של מחרוזות של מזהי מודלים וגרסאות. בניגוד ל-Firebase שדרש דגל --device אחד לכל מכשיר, הפעלה במכשיר מאפשרת לציין כמה מכשירים בדגל אחד. הגדרת הלוקאל, הכיוון והקואורדינטות המדומות של המכשיר מתבצעת באמצעות דגלים נפרדים ברמה העליונה:
- ❌
--device model=MediumPhone.arm,version=32,locale=en,orientation=portrait - ✅
--device=mediumphone-arm-32 --locale=en-US --orientation=portrait
2. מילונים ורשימות
המרת דגלים שמופרדים בפסיקים לרשימות (--apps, --paths-to-pull) או למילונים של זוגות מפתח/ערך (--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. שיטות שרדינג
- Uniform Sharding:
- מגדירים את
--sharding-option=uniform. - מגדירים את
--uniform-sharding-count={count}(1-20 למוצרים פיזיים, 1-200 למוצרים וירטואליים).
- מגדירים את
- Smart Sharding:
- מגדירים את
--sharding-option=smart. - הגדרת
--smart-sharding-target-duration={duration}(לדוגמה, 2m,10m,1h; טווח תקף:2mעד1h). - מגדירים את
--smart-sharding-record-name={record_name}(מפנה לרשומת המעקב של YAML בתוך--bucket-nameבקטעautomation/smart-sharding/). - הגדרת
--smart-sharding-max-shard-count={max_count}(תקרת שימוש אופציונלית: 0-20 לכרטיסים פיזיים, 0-200 לכרטיסים וירטואליים).
- מגדירים את
4. ביצוע אסינכרוני
- Async & Waiting: כשמציינים את
--async, ה-CLI מחזיר מיד את מזהה הסשן שנוצר. אפשר להמתין לסיום הסשן בתהליכי עבודה של 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 ישירות למנתח הפקודות של ממשק שורת הפקודה בתור תגי שורת פקודה. כל מפתח בקובץ ה-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
(אפשר גם להוסיף או לשנות הגדרות flag בשורת הפקודה, למשל להוסיף את --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"