חזרה
קידוד עם AI הפך את ה-CI לצוואר בקבוק — כך עיצבה ליניארית את התהליך מחדש
SiTech AI Team2 წთ. საკითხავი

קידוד עם AI הפך את ה-CI לצוואר בקבוק — כך עיצבה ליניארית את התהליך מחדש

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

לינארית פרסמה תיאור של האופן שבו עיצבה מחדש את תהליך האינטגרציה הרציפה (CI) לאחר שסוכני AI האיצו כל כך את שחרור הקוד, עד שבדיקת השינויים הפכה לשלב האיטי ביותר. הפוסט בבלוג Now של החברה פורסם ב-21 בספטמבר וחתום בידי מופיז אמג'ד (Mufeez Amjad) מצוות לינארית, שלדבריו הכול החל במשימה שהקצה לו מנהל הטכנולוגיות טואומאס תחת הכותרת „CI costs are high“.

למה ה-CI הפך לצוואר בקבוק

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

גרף: גידול מאגר הבדיקות מול זמן מכונה לכל בדיקה

תשתית ולינטר מהירים יותר

מעבר מ-GitHub Actions לרָאנרים של צד שלישי עם מעבדים מהירים יותר ומיתוג טוב יותר האיץ את המשימות בממוצע ב-34%, ואת בדיקת הטיפוסים tsc ב-52%. מעבר ל-tsgo, המהדר המקורי של TypeScript, קיצר את החציון השבועי של בדיקת הטיפוסים ב-73%. חוקי לינט שהסתמכו על מידע טיפוסים נכתבו מחדש כאנליזה סטטית של עץ התחביר: ESLint ויתר על TypeScript, זמן הלינט של ה-API ירד ב-68% ושל כל המאגר ב-55%.

המסלול הקריטי והכנה חוזרת

הגבלת עומק ה-checkout קיצרה את המשימה המגשרת האיטית ביותר מ-94 ל-20 שניות, ובמשימות שלא נזקקו לעץ עבודה הוסר ה-checkout לחלוטין (מ-27 ל-7 שניות), והחציון של משימת זיהוי השינויים ירד מ-26 ל-8 שניות. העברת כתיבת סמן המטמון מחוץ למסלול המיזוג חסכה 42 שניות בכל בקשת משיכה של ה-API.

תהליך test-api לפני ואחרי: 4:57 מול 3:14

גם ההכנה החוזרת צומצמה: התקנת pnpm הוגבלה לחבילת ה-API (מ-44-73 שניות ל-16-18), וזמן ההכנה לכל שרד ירד מ-110-140 שניות ל-67-73. איחוד שבע בדיקות קצרות לשתי משימות חסך כ-87,000 דקות רָאנר בחודש — 11.8% מכלל השימוש ב-CI — והמעבר מארבעה לשמונה שרדים הפך את המשימה הקריטית למהירה וזולה בכ-19%.

הרצת בדיקות והשורה התחתונה

הרווח הגדול ביותר הגיע מפרויקט Vitest אופציונלי עם ביטול הבידוד: חיסכון חודשי של כ-17%, השרד האיטי ביותר ירד מ-300-379 שניות לכ-195, וזמן הרָאנר של שרדי ה-API ירד מ-32.8 ל-22 דקות בכל הרצה. זה היה השינוי המסוכן ביותר לנכונות, ולכן ההצטרפות מפורשת לכל קובץ. לפי הערכת לינארית, ללא העבודה הזאת מאגר הבדיקות של היום היה נמשך כ-11 דקות — כמעט כפול מהיום; מדי שבוע נוספים כ-2,000 בדיקות, ולכן העבודה נמשכת.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.