שילוב Test Lab במערכת CI/CD

1. מבוא

תאריך עדכון אחרון: 7 באפריל 2022

איך מריצים בדיקות לנייד עם מערכות CI/CD

הרצת בדיקות לנייד יכולה להיות קשה: אפליקציות רבות פועלות בפלטפורמות, במכשירים שונים ובגרסאות API שונות. מפתחי אפליקציות רוצים לבדוק כמה שיותר הגדרות אישיות כדי לזהות בעיות לפני שהמשתמשים נתקלים בבעיות. עם זאת, אילוצי עלות ומשאבים מגבילים את מספר מכשירי הבדיקה ואת כמות התחזוקה הידנית שמפתחים יכולים להשקיע בהם. כאשר תהליך הפיתוח מתרחב, במיוחד במערכות אינטגרציה רציפה ופיתוח רציף (CI/CD), תהליך הבדיקה צריך להיות אוטומציה ולצמצם את העלויות ומאמצי התחזוקה.

כדי לעזור לכם להבין את ביצועי האפליקציות שלכם במכשירים של המשתמשים, הכלי Firebase Test Lab מארח מגוון של מכשירים פיזיים ומכשירים וירטואליים במרכזי הנתונים שלנו. אנחנו מספקים גם את Google Cloud CLI, כלי של שורת הפקודה שאינו תלוי בפלטפורמה ומארגן את הרצת הבדיקות במכשירים במרכזי הנתונים שלנו. באמצעות ה-CLI של gcloud, קל לשלב את הפתרון של Test Lab לבדיקות בענן בתהליכי העבודה הקיימים של CI/CD.

תמיכה בפלטפורמות שונות

ב-Test Lab יש פתרונות בדיקה לאפליקציות ל-Android ול-iOS, ותמיכה מיוחדת למשחקים לנייד כמו Unity. אפשרויות הבדיקה כוללות מסגרות בדיקה פופולריות, כמו Android Espresso, UI Automator ו-iOS XCTest. בעזרת הסורק האוטומטי שלנו, Robo, אפשר להריץ בדיקות ב-Test Lab גם בלי קוד בדיקה.

אין דרישות חומרה

אפליקציית Test Lab מארחת מכשירים פיזיים במרכזי הנתונים של Google, ומארחת מכשירים וירטואליים ב-Google Cloud. כל מה שצריך לעשות הוא לשלוח את הבדיקות ל-Test Lab ולהמתין לתוצאות.

מהיר ואמין

הרצת מקרי בדיקה רבים בו-זמנית עשויה להימשך זמן רב ולחסום תהליכי CI/CD. בעזרת Test Lab אפשר לפצל בקלות בדיקות ולהריץ אותן במקביל בכמה מכשירים. אפשר גם לזהות בעיות לא עקביות, נקודת חולשה נפוצה בבדיקות בנייד.

מה תלמדו

  • איך יוצרים ארטיפקטים לבדיקה
  • איך מריצים בדיקה לנייד באמצעות CLI של gcloud
  • איך מגדירים Jenkins CI
  • איך מריצים בדיקות לנייד באמצעות Jenkins CI
  • איך להגדיר בדיקות להתאמה לעומס (scaling) עם מערכות CI

בקודלאב הזה נסביר איך מריצים בדיקות. מונחים לא רלוונטיים ובלוקים של קוד עם הפרדה מודגשת, כך שאפשר פשוט להעתיק ולהדביק אותם.

מה צריך להכין

אם אתם מעדיפים לפתח משהו מאפס, תצטרכו את Android Studio כדי להריץ בדיקה ל-Android או את XCode כדי להריץ בדיקה ל-iOS. או פשוט להביא את עצמכם ואנחנו נספק את פריטי המידע שנוצרו בתהליך הפיתוח (Artifact).

2. הפעלת בדיקה באמצעות ה-CLI של gcloud

בניית APK של אפליקציה ל-Android ובדיקת APK

כדי להריץ בדיקה באמצעות Test Lab, קודם צריך ליצור קובץ APK של אפליקציית Android וקובץ APK לבדיקה, שמכיל בדיקות עם מכשירי מדידה לצורך הפעלה במכשירי חומרה או באמולטורים. אם כבר יש לך Codebase פעיל, יש לך אפשרות ליצור חבילות APK משלך או להשתמש ב-BasicSample for Espresso.

כדי לבנות חבילות APK באמצעות פקודות Gradle, צריך להתקין את Android SDK. אם Android Studio לא מותקן במחשב שלכם, צריך להתקין את Android Studio ואת Android SDK ולהגדיר את סביבת ANDROID_HOME באמצעות ספריית Android SDK. לדוגמה, מוסיפים את השורה הבאה לקובץ ~/.bash_profile:

export ANDROID_HOME=~/Android/Sdk # For linux
export ANDROID_HOME=~/Library/Android/sdk  # For MacOS

לאחר מכן, מריצים את הפקודות הבאות כדי לשכפל את הקוד ולבנות קובצי APK:

git clone https://github.com/android/testing-samples.git
cd testing-samples/ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

אחרי שמריצים את פקודות השכפול וה-build, אפשר למצוא את ה-APK של האפליקציה ואת ה-APK לבדיקה במיקומים הבאים:

app/build/outputs/apk/debug/app-debug.apk
app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

לחלופין, אפשר להשתמש באפשרויות הבאות כדי לקבל את חבילות ה-APK של האפליקציה והבדיקה:

  • כדי לבנות חבילות APK ב-Android Studio, פועלים לפי ההוראות במאמר בדיקה ב-Android Studio.
  • מורידים את אפליקציית פנקס רשימות לדוגמה. משתמשים בקובץ הבינארי app-debug-unaligned.apk ובקובץ בדיקות האינסטרומנטציה app-debug-test-unaligned.apk, שנמצאים ב-NotePad/app/build/outputs/apk/.

אם יש לכם קוד מקור תקין לאפליקציה ל-iOS, אתם יכולים לכתוב XCTest וליצור קובץ zip מהאפליקציה ומהמבדקים.

איך משתמשים ב-CLI של gcloud כדי להריץ בדיקה באמצעות Test Lab

בקטע הזה תלמדו ליצור פרויקט Firebase ולהגדיר את הסביבה המקומית של Google Cloud SDK. למידע נוסף, קראו את המאמר התחלת בדיקה עם ה-CLI של gcloud .

הגדרת ה-CLI של gcloud

  1. מורידים את Google Cloud SDK, שכולל את כלי ה-CLI של gcloud.
  2. מוודאים שההתקנה עדכנית:
gcloud components update
  1. נכנסים ל-CLI של gcloud באמצעות חשבון Google:
gcloud auth login
  1. מגדירים את פרויקט Firebase ב-CLI של gcloud, כאשר PROJECT_ID הוא מזהה הפרויקט ב-Firebase. מזהה הפרויקט מופיע בכתובת ה-URL של מסוף Firebase, לפי המוסכמה הבאה למתן שמות: https://console.firebase.google.com/project/[PROJECT_ID]/...
gcloud config set project PROJECT_ID

אם אין לכם פרויקט ב-Firebase, תוכלו ליצור פרויקט במסוף Firebase.

הרצת בדיקה באמצעות חבילות ה-APK המוכנות

בקטע הזה, מריצים בדיקת אינסטרומנטציה במכשיר ברירת המחדל של Test Lab, שהוא Pixel 3 עם רמת API 28. אם רוצים להשתמש במכשיר אחר, בודקים אילו מכשירים זמינים.

באמצעות האפליקציה ובדיקת חבילות ה-APK שיצרת ב-Build an APK של אפליקציה ל-Android ובדיקת ה-APK, מריצים בדיקת Android Instrumentation באמצעות הפקודה הבאה:

gcloud firebase test android run \
  --type instrumentation \
  --app app/build/outputs/apk/debug/app-debug.apk \
  --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

ניתוח של תוצאות הבדיקה

אפשר לנתח את תוצאות הבדיקה באמצעות כל אחת מהאפשרויות הבאות:

  • gcloud summary – בסיום הבדיקה, ה-CLI של gcloud מדפיס סיכום בסיסי של תוצאות הבדיקה.
  • gcloud קוד יציאה – בסיום הבדיקה, אם הבדיקה עברה בהצלחה, הפקודה יוצאת עם 0. אם הבדיקה נכשלת, הפקודה תסתיים עם קוד יציאה שאינו אפס.
  • מסוף Firebase – ה-CLI של gcloud מדפיס קישור למסוף Firebase. הקישור תואם למוסכמות מתן השמות https://console.firebase.google.com/project/PROJECT_ID/testlab/... למידע נוסף מומלץ לעיין במאמר פירוש תוצאות מביצוע בדיקה אחת.
  • קובץ XML של JUnit – ה-CLI של gcloud מדפיס את הפרטים הבאים:
Raw results will be stored in your Cloud Storage bucket at [https://console.developers.google.com/storage/browser/test-lab-xxxxx/xxxxx/]

test-lab-xxxxx/xxxxx היא הקטגוריה ב-Cloud Storage שבה מאוחסנים ארטיפקטים ותוצאות של בדיקות. כדי לאתר את קובץ ה-XML של ה-JUnit הכולל את תוצאות הבדיקה, פותחים את הקישור ועוברים אל blueline-28-en-portrait/test_result_1.xml.

3. הגדרה באמצעות Jenkins CI

בקטע הזה תשתמשו ב-Jenkins CI, מערכת CI פופולרית, כדי להריץ בדיקות עם Test Lab. אם אתם רוצים להשתמש במערכת CI אחרת, כדאי לעיין בשיטות המומלצות המתקדמות להרצת חבילות בדיקה גדולות ובמסמכי התיעוד של מערכות CI אחרות, כמו Bitrise ו-Circle CI. אפשר להשתמש ב-Flank כחלופה ל-CLI של gcloud.

הפעלת ה-CLI של gcloud ב-Jenkins

כדי להשתמש ב-Test Lab עם Jenkins, צריך להפעיל את ממשקי ה-API הנדרשים ולהגדיר חשבון שירות ש-Jenkins יוכל להשתמש בו כדי לבצע אימות באמצעות ה-CLI של gcloud.

הוספת חשבון שירות של Google Cloud ל-Jenkins

חשבונות שירות הם חשבונות מוגבלים שמיועדים לשילובי שירותים. החשבונות האלה מציעים שליטה פרטנית לשירותים ספציפיים והם לא כפופים לבדיקות ספאם או להנחיות captcha, שעלולות לחסום את גרסאות ה-build של ה-CI.

כדי ליצור חשבון שירות, צריך לבצע את השלבים הבאים:

  1. פותחים את הדף Service Accounts במסוף Google Cloud.
  2. לוחצים על Create service account, מוסיפים Name ו-Description (תיאור) ואז לוחצים על Create and continue.
  3. בתפריט הנפתח Select a role, בוחרים Basic ואז בוחרים Editor.
  4. לוחצים על Continue (המשך) ואז על Done (סיום).

בשלב הבא, יוצרים ומורידים מפתח אימות ש-Jenkins יכול להשתמש בו כדי לבצע אימות כחשבון השירות שיצרתם.

כדי ליצור ולהוריד את המפתח של חשבון השירות:

  1. בדף Service Accounts במסוף Google Cloud, לוחצים על כתובת האימייל שמשויכת לחשבון שיצרתם.
  2. בוחרים באפשרות Keys, לוחצים על Add key ואז על Create new key.
  3. בוחרים באפשרות JSON ולוחצים על Create.
  4. כשמופיעה בקשה להורדת הקובץ, לוחצים על אישור. מורידים את הקובץ למקום בטוח במחשב. תצטרכו את הקובץ הזה מאוחר יותר כשתגדירו את Jenkins.

מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירת חשבון שירות.

הפעלת ממשקי ה-API הנדרשים של Google Cloud

Cloud Testing API מאפשר לכם להריץ בדיקות בתשתית של Google. הפעלתם את ה-API הזה כשהרצתם בדיקה באמצעות CLI של gcloud. Cloud Tool Results API מאפשר לכם לגשת באופן פרוגרמטי לתוצאות הבדיקה.

  1. פותחים את ספריית ה-API של Google Developers Console.
  2. בסרגל החיפוש שבחלק העליון של מסוף Firebase, מזינים את השם של כל ממשק API נדרש (Cloud Testing API ו-Cloud Tool Results API). דף הסקירה הכללית של ה-API המבוקש יופיע.
  3. לוחצים על Enable API (הפעלת ה-API) בדף הסקירה הכללית של כל API.

התקנה והגדרה של Jenkins

אתם יכולים להתקין ולהגדיר את Jenkins CI ב-Linux, ב-macOS, ב-Windows ובסביבות רבות אחרות. פרטים מסוימים בקודלאב הזה ספציפיים להתקנה ולהפעלה של Jenkins CI ב-Linux, כולל השימוש בקו נטוי (/) בנתיבי קבצים.

כדי להוריד ולהתקין את Jenkins במחשב עם Linux או Windows, פועלים לפי ההוראות להתקנת Jenkins. אחרי שתתקינו את Jenkins, עליכם לפעול לפי אותן הוראות התקנה של Jenkins כדי להשלים את ההגדרה ולגשת ללוח הבקרה של Jenkins באמצעות http://localhost:8080.

אימות הפלאגינים המותקנים

ב-Jenkins יש תמיכה במערכות שונות לניהול גרסאות. בקודלאב הזה נעשה שימוש ב-Git כדי להריץ את הבדיקה הקודמת. וכדי ליהנות מחוויה משופרת עם הרצת ה-CLI של gcloud, צריך להתקין את הפלאגין GCloud SDK.

  1. בלוח הבקרה של Jenkins, לוחצים על Manage Jenkins ואז על Manage Plugins.
  2. מחפשים את יישומי הפלאגין Git ו-GCloud SDK ומתקינים אותם (אם הם עדיין לא מותקנים).

הגדרת המיקום של ערכות ה-SDK של Android ו-Google Cloud

עכשיו צריך להנחות את Jenkins איפה נמצאים Google Cloud SDK ו-Android SDK.

כדי להגדיר את Google Cloud ו-Android SDK ל-Jenkins:

  1. במרכז הבקרה של Jenkins, לוחצים על Manage Jenkins ואז על Global Tool Configuration.
  2. בקטע Google Cloud SDK, לוחצים על Add Google Cloud SDK.
  3. בשדה Name, מזינים שם למכונה של Google Cloud SDK שקל לזכור, למשל GCloud-SDK.
  4. מזינים את ספריית הבית של Google Cloud SDK, לדוגמה /opt/google-cloud-sdk.
  5. לוחצים על שמירה.
  6. כדי להגדיר את המאפיינים ברמת המערכת ל-Android ול-Google Cloud SDK, פותחים את Dashboard > Manage Jenkins > Configure System.
  7. מסמנים את התיבה Environment variables ולוחצים על Add.
  8. בשדה שם, מזינים ANDROID_HOME. בשדה ערך, מזינים את המיקום של ה-Android SDK, לדוגמה, /opt/Android/Sdk.
  9. לוחצים על תיבת הסימון מיקומי כלים ולוחצים על הוספה. בתפריט הנפתח Name, בוחרים את השם של מופע Google Cloud SDK שהוספתם בהגדרת הכלים הגלובלית.
  10. בשדה Home (בית), מזינים את המיקום של Google Cloud SDK, לדוגמה /opt/google-cloud-sdk.
  11. לוחצים על שמירה.

הוספת פרטי הכניסה של חשבון השירות ל-Jenkins

עכשיו מוסיפים ל-Jenkins את פרטי הכניסה לחשבון השירות של ה-CLI של gcloud כדי לאפשר ל-Jenkins לבצע אימות ולהריץ פקודות ב-CLI של gcloud.

  1. בלוח הבקרה של Jenkins, לוחצים על Manage Jenkins ואז על Manage Credentials.
  2. בקטע Stores scoped to Jenkins, לוחצים על הקישור לדומיין (global) ואז על Add Credentials.
  3. בתפריט הנפתח Kind, בוחרים באפשרות Google Service Account from private key.
  4. בשדה Project Name (שם הפרויקט), מזינים את שם הפרויקט ב-Firebase.
  5. בוחרים באפשרות מפתח JSON, לוחצים על עיון ומעיינים למיקום שבו שמרתם את המפתח של חשבון השירות.
  6. לוחצים על יצירה.

עכשיו אתם מוכנים להגדיר את ה-build האוטומטי של Jenkins ל-Test Lab.

4. הרצת בדיקות של Test Lab באמצעות Jenkins CI

עכשיו, אחרי שהגדרתם את Jenkins, נרכיב את כל החלקים ונריץ את אותה בדיקה באמצעות Jenkins.

אפשר להגדיר את Jenkins להריץ גרסאות build אוטומטיות ולבצע בדיקות בכל פעם שמעדכנים את האפליקציה. אפשר גם להגדיר את Jenkins כדי להריץ גרסאות build תקופתיות. למידע נוסף על הגדרת גרסאות build ב-Jenkins, קראו את המאמר הגדרת גרסאות build אוטומטיות.

יצירת פרויקט ב-Jenkins והגדרתו

יצירת פרויקט להרצת בדיקות שילוב רציפה של האפליקציה באמצעות Test Lab.

יצירת פרויקט ב-Jenkins

  1. פותחים את מרכז הבקרה של Jenkins בכתובת http://localhost:8080.
  2. במרכז הבקרה של Jenkins, לוחצים על New Item.
  3. מזינים שם לפרויקט בשדה Item name (שם הפריט) ולוחצים על Freestyle project (פרויקט פריסטייל) כדי ליצור פרויקט שמשתמש בהגדרת build אחת בלבד.
  4. לוחצים על אישור. כדי להשלים את הגדרות הפרויקט, משלימים את שאר הקטעים ברצף.

הגדרת ניהול קוד המקור

  1. בכרטיסייה Source Code Management, בוחרים באפשרות Git.
  2. מזינים את הכתובת https://github.com/android/testing-Sample.git בשדה כתובת ה-URL של המאגר.

הגדרה של סביבת ה-build

בקטע 'סביבת build' אפשר להגדיר את מאפייני ה-build. כך מפעילים את האימות ב-Google Cloud:

  1. בכרטיסייה Build Environment, מסמנים את התיבה GCloud SDK verification ואז בוחרים את שם ההתקנה שבחרתם כשהוספתם את פרטי ההתקנה של Google Cloud.
  2. בתפריט הנפתח Google Credentials, בוחרים את פרטי הכניסה של חשבון השירות שהגדרתם.

מוסיפים את שלבי ה-build של Gradle כדי לבנות מחדש חבילות APK

  1. גוללים למטה לקטע Build, לוחצים על Add build step ובוחרים באפשרות Execute shell.
  2. כדי להריץ את הפקודות הבאות בספרייה הראשית של האפליקציה, צריך להוסיף שלב build:
cd ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

הוספת שלב build של CLI של gcloud ל-Jenkins

עכשיו אתם מוכנים להוסיף שלב build ל-Jenkins כדי להריץ את Test Lab באמצעות שורת הפקודה של ה-CLI של gcloud.

כדי להוסיף את שלב ה-build של ה-CLI של gcloud, מוסיפים שלב build חדש מסוג Execute shell ומזינים את הפקודה הבאה:

gcloud config set project PROJECT_ID
gcloud firebase test android run \
--app ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/debug/app-debug.apk
--test ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

אחרי שמסיימים להגדיר את הפרויקט, גוללים למטה לתחתית הדף ושומרים את ההגדרה. המערכת תפנה אתכם לדף הבית של הפרויקט החדש.

הרצת בדיקות באמצעות Jenkins

עכשיו אתם מוכנים ליצור את הפרויקט ב-Jenkins ולהריץ בדיקה כמו הבדיקה הידנית שרציתם באמצעות ה-CLI של gcloud.

כדי להריץ בדיקה באמצעות Jenkins:

  1. כדי להפעיל את ה-build באופן ידני, לוחצים על Build Now (יצירה).
  2. כדי לבדוק את ההתקדמות והתוצאות, לוחצים על ה-build החדש > Console Output.

אם לא מופיעות שגיאות, הפעולה שביצעתם נכונה. הגדרתם פרויקט והפעלתם בדיקה במכשיר Pixel 2 בלחיצה אחת. אם תיתקלו בשגיאות, תוכלו להיעזר בפתרון בעיות.

5. שיטות מומלצות מתקדמות להרצת חבילות בדיקה גדולות

כשרוצים להריץ הרבה בדיקות בו-זמנית, מומלץ לפעול לפי השיטות המומלצות הבאות כדי להבטיח שהבדיקות יפעלו במהירות ובמהימנות.

הגדלת הכיסוי בכמה תצורות מכשירים

אפשר להוסיף בקלות מספר מכשירים לשלב ה-build של ה-CLI של gcloud. אפשר גם לבדוק ולבחור את המכשירים, הגרסאות, המיקומים והכיוונים הזמינים. לדוגמה, הפקודה הבאה מפעילה בדיקות בשני מכשירים:

  • Google Pixel 2 וירטואלי עם רמת API 30 בפריסה לאורך ולוקאל באנגלית
  • מכשיר פיזי מדגם Samsung Galaxy S20 עם רמת API 29 בפריסה לרוחב ובשפה הצרפתית
gcloud firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --device model=Pixel2,version=30,locale=en,orientation=portrait  \
  --device model=x1q,version=29,locale=fr,orientation=landscape

שימוש בקובץ תצורה מסוג YAML ב-CLI של gcloud

אם אתם מעדיפים לנהל את הארגומנטים במקום אחד או באמצעות מערכת בקרת המקור, אתם יכולים לציין את הארגומנטים האלה בקובץ ארגומנטים בפורמט YAML. כדי ללמוד איך להשתמש בתכונה הזו, מריצים את gcloud topic arg-files.

חלוקת בדיקות לקטעים להרצה במקביל

חלוקת בדיקות מחלקת קבוצה של בדיקות לקבוצות משנה (פלחים) שפועלות בנפרד ובאופן מבודד. Test Lab מפעילה כל פיצול במקביל באופן אוטומטי באמצעות מספר מכשירים, וכך מאפשר ל-Test Lab להשלים את כל קבוצת הבדיקות מהר יותר. מידע נוסף זמין במאמר הפעלת חלוקה.

כדי להפעיל פיצול, צריך להשתמש בערוץ gcloud beta ולהוסיף את הדגל –num-uniform-shards או –test-targets-for-sard לשלב ה-build של ה-CLI של gcloud. לדוגמה, כדי לפצל את הבדיקות לחמישה ביצועים ולהריץ אותן במקביל, מריצים את הפקודות הבאות:

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-uniform-shards 5

הפעלת זיהוי בהירות

בדיקות במכשירים ניידים יכולות לעיתים קרובות להיות רעות. לפעמים הבדיקות עוברות, ולפעמים הן נכשלות, גם עם אותה הגדרה. אפשר לזהות אם בדיקה שנכשלה הייתה לא יציבה באמצעות הדגל ‎–num-flaky-test-attempts ב-CLI של gcloud. הדגל הזה מציין את מספר הפעמים שצריך לנסות שוב את ביצוע הבדיקה אם אחד או יותר מתרחישים הבדיקה נכשלים מסיבה כלשהי.

לדוגמה, כדי להריץ מחדש תרחישים שנכשלו של בדיקות שלוש פעמים נוספות אחרי ההרצה הראשונית שנכשלה, מציינים את הפרטים הבאים:

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-flaky-test-attempts 3

6. מזל טוב

מזל טוב, הרצת בהצלחה את הבדיקה הראשונה של Test Lab עם מערכת CI!

פיתחתם אפליקציות ובדקתם חבילות APK, והרצתם בדיקת אינסטרומנטציה עם Test Lab באמצעות ה-CLI של gcloud. בנוסף, מגדירים פרויקט Jenkins כדי להפוך את אותו הבדיקה לאוטומטית.

עכשיו אתם מכירים את שלבי המפתח שצריך לבצע כדי לשלב את Test Lab במערכת CI/CD.

מה השלב הבא?

כדאי לקרוא איך מגדירים CI באמצעות חבילת האמולטור של Firebase.

קריאה נוספת

מסמכי עזר