יסודות של אינטגרציה רציפה (CI)

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

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

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

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

דוגמה אופיינית

מערכת CI אופיינית פועלת לפי תהליך עבודה או צינור עיבוד נתונים, שעשויים להיראות כך:

  1. מערכת ה-CI מזהה שינוי בקוד, בדרך כלל כשמפתח יוצר בקשת משיכה (pull request), שנקראת גם 'רשימת שינויים' או 'בקשת מיזוג'.
  2. הוא מקצה ומאתחלת שרת להרצת תהליך העבודה.
  3. הוא מאחזר את הקוד וגם כלים כמו Android SDK או קובצי אימג' של אמולטור, לפי הצורך.
  4. הוא יוצר את הפרויקט על ידי הפעלת פקודה נתונה, למשל ‎ ./gradlew build.
  5. הוא מפעיל את הבדיקות המקומיות על ידי הרצת פקודה מסוימת, למשל הרצת /gradlew test.
  6. הוא מפעיל את הסימולטורים ומריץ את הבדיקות עם הכלים.
  7. הוא מעלה פריטים כמו תוצאות בדיקות ו-APK.
תרשים שבו מוצג תהליך עבודה בסיסי של CI
איור 2. תהליך עבודה בסיסי של CI

היתרונות של CI

היתרונות של CI כוללים:

  • שיפור איכות התוכנה: CI יכול לעזור בשיפור איכות התוכנה על ידי זיהוי ופתרון בעיות בשלב מוקדם. כך תוכלו לצמצם את מספר הבאגים במהדורות התוכנה ולשפר את חוויית המשתמש הכוללת.
  • הפחתת הסיכון ל-builds שבורים: כשמפעילים אוטומציה של תהליך ה-build באמצעות CI, אפשר למנוע build שבור על ידי פתרון בעיות בשלב מוקדם יותר בתהליך.
  • ביטחון מוגבר בגרסאות: CI יכול לעזור לוודא שכל גרסה יציבה ומוכנה לייצור. הרצת בדיקות אוטומטיות מאפשרת ל-CI לזהות בעיות פוטנציאליות לפני שמפיצים אותן לציבור.
  • שיפור התקשורת והשיתוף פעולה: CI מספק מקום מרכזי שבו מפתחים יכולים לשתף קוד ותוצאות בדיקות, וכך עוזר למפתחים ולחברים אחרים בצוות לעבוד יחד ולעקוב אחרי ההתקדמות בקלות רבה יותר.
  • שיפור הפרודוקטיביות: CI יכול לעזור לשפר את הפרודוקטיביות של המפתחים על ידי אוטומציה של משימות שעלולות להיות זמן רב ומועדות לשגיאות.

מקורות מידע נוספים

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