אינטגרציה רציפה
שיטת עבודה בהנדסת תוכנה, שבמסגרתה כל סביבות הפיתוח עוברות מיזוג תכוף עם מוקד מרכזי משותף / ויקיפדיה האנציקלופדיה encyclopedia
בהנדסת תוכנה, Continuous integration (ראשי תיבות: CI; בעברית: אינטגרציה רציפה) היא שיטת עבודה שבמסגרתה כל סביבות הפיתוח עוברות מיזוג עם מוקד מרכזי משותף (באנגלית: repository או mainline) כמה פעמים ביום במסגרת של ניהול גרסאות. שיטת עבודה זו התגבשה לראשונה כחלק ממתודולוגית Extreme Programming. המטרה הראשית של CI היא למנוע תקלות אינטגרציה, המכונות לעיתים "integration hell" ("גיהנום האינטגרציה"; על משקל תקלת תוכנה ידועה אחרת בשם DLL hell).
ערך מחפש מקורות | |
הנדסת תוכנה |
---|
ערך זה שייך לקטגוריית הנדסת תוכנה |
פעילויות ושלבים |
דרישות • ניתוח • אפיון • ארכיטקטורה • עיצוב • תכנות • דיבוג • בדיקה • אימות • בנייה • פריסה • תפעול • תחזוקה |
מתודולוגיות |
זריזות • מפל המים • תכנת ותקן • Crystal Clear • Scrum • Unified Process • Extreme Programming • אינטגרציה רציפה • DevOps |
תחומים תומכים |
ניהול פרויקטים • ניהול תצורה • תיעוד • הבטחת איכות • Profiling |
כלים |
מהדר • מקשר • מפרש • IDE • ניהול גרסאות • אוטומציית בנייה |
בשיטה המסורתית מפתחים שונים עובדים על תכונות שונות של המוצר ולקראת הוצאת גרסה חדשה ממזגים את כל השינויים. רק אז אפשר לבדוק איך כל השינויים השונים משפיעים האחד על השני. בשיטת המיזוג הרציף, ענף הפיתוח הראשי מייצג תמיד מוצר עובד (שעובר את כל הבדיקות).
במקור CI יועדה לשימוש בשילוב עם בדיקות יחידה אוטומטיות אשר נכתבות כחלק מפיתוח מונחה-בדיקות. תחילה הרעיון היה להריץ בדיקות יחידה כדי לוודא שכולן עברו בהצלחה לפני הגשת הקוד החדש למוקד המרכזי (ביצוע commit ל-repository). פיתוחים מאוחרים יותר של השיטה הכניסו שימוש בשרתי בנייה (build servers) אשר מריצים אוטומטית בדיקות יחידה מעת לעת או אפילו לאחר כל commit, ומדווחים על תוצאות הבדיקות למפתחים. השימוש בשרתי בנייה (אשר לא בהכרח מריצים בדיקות יחידה) היה בשימוש גם על ידי צוותי פיתוח שאינם עובדים בשיטת ה-extreme programming. כעת הרבה ארגונים אימצו את שיטת ה-CI מבלי לאמץ את כל יתר השיטות של XP.
בנוסף לבדיקות יחידה אוטומטיות, ארגונים אשר עובדים בשיטת ה-CI בדרך כלל משתמשים בשרת הבנייה על מנת ליישם תהליכים רציפים של בקרת איכות כללית – יחידות עבודה קטנות המיושמות לעיתים קרובות. בנוסף להרצת בדיקות יחידה ובדיקות אינטגרציה, תהליכים כאלה מריצים בדיקות סטטיות ודינמיות נוספות, מודדים את הביצועים, מפיקים דוקומנטציה מקוד המקור ומסייעים בביצוע בדיקות תוכנה ידניות. המטרה ביישום בקרת איכות רציפה כזאת היא שיפור איכות התוכנה וקיצור זמני האספקה שלה ללקוח (delivery), וזאת באמצעות החלפת השיטה המסורתית של יישום בקרת האיכות לאחר סיום הפיתוח. זה דומה מאוד לרעיון המקורי של ביצוע אינטגרציות תכופות על מנת להקל על תהליך האינטגרציה, אבל הפעם בהקשר של הבטחת איכות.
במסגרת אותה מתודולוגיית פיתוח תוכנה נכללת גם שיטת ה-continuous delivery (אספקה רציפה), אשר מרחיבה את שיטת ה-CI בכך שהיא מוודאת שהתוכנה כפי שהיא נמצאת ב-repository, תמיד נמצאת במצב שניתן לפרוס אותה אצל משתמשים, ובכך הופכת את תהליך פריסת התוכנה למהיר ביותר.