סנכרון והרבה מאגרים

CI מקומי

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

CI מקומי

אינטגרציה, לא סביבת ריצה מובנית

Gitcito בכוונה לא מגיע עם act או Docker — אפליקציה שגוררת איתה סביבת ריצה של קונטיינרים היא ההפך מלקוח git. זו אינטגרציה בהסכמה מפורשת: מפעילים אותה ב־הגדרות → אינטגרציות (או בדיאלוג עצמו), ו־Gitcito מזהה מה מותקן ומדריך אתכם בשאר — brew install act, דמון Docker פעיל, וזהו. שום דבר לא רץ עד ששלושת התנאים מתקיימים: מופעל, act מותקן, Docker נגיש.

מה זה עושה

  • מציג כל תהליך עבודה תחת .github/workflows, לפי ה־name: שלו.
  • הרצה מריצה את תהליך העבודה עם act מול עץ העבודה שלכם — כולל השינויים שטרם עברו קומיט, וזו בדיוק הנקודה: בודקים לפני הקומיט, לא אחרי הדחיפה.
  • הפלט זורם בשידור חי אל הדיאלוג; עצירה הורגת את הריצה. קוד יציאה 0 מציג עבר, כל דבר אחר — נכשל עם הקוד.

הכרעה לכל קומיט על הגרף

הכרעות Local-CI על הגרף

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

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

בדיקת קומיט או טווח — בלי לעזוב את הענף שלכם

מקטע בדיקת קומיט או טווח בדיאלוג מריץ תהליך עבודה על קומיטים שאתם לא נמצאים עליהם. כל קומיט נשלף במצב מנותק (detached) אל עץ עבודה (worktree) חד־פעמי תחת ספריית הקבצים הזמניים של המערכת, act רץ שם, ועץ העבודה הזמני מוסר בכל דרך שבה הריצה מסתיימת — עץ העבודה שלכם והענף שלכם לעולם לא זזים. מכיוון שהשליפה הזו נקייה מעצם בנייתה, ההכרעה תמיד מוצמדת לקומיט שנבדק. לחיצה ימנית על קומיט בגרף מציעה ישירות הרצת CI מקומי על הקומיט הזה.

העלות נאמרת לפני שמשהו רץ, ולא מתגלה אחר כך: הקלידו רוויזיה או טווח (main..HEAD, HEAD~5.., sha), לחצו תצוגה מקדימה, ו־Gitcito יראה כמה קומיטים תואמים למפרט ואילו N החדשים ביותר — התקציב המפורש, מוגבל ל־50 — ירוצו בפועל. סריקה מריצה אותם ברצף (act ועוד Docker כבדים מספיק כדי שריצות מקבילות יילחמו על המכונה), מזרימה את הלוג של כל ריצה, מסמנת כל קומיט כעבר/נכשל בשידור חי, ועצירה קוטעת בין קומיטים תוך הריגת הריצה שבאוויר. צפו לדקות של ממש לכל קומיט.

עוד מגבלה ששווה להכיר: עץ העבודה החד־פעמי מכיל את קבצי הקומיט אבל לא את שליפות תת־המודולים של המאגר שלכם — תהליך עבודה שתלוי בתת־מודולים מאותחלים יתנהג כפי שהיה מתנהג על שכפול טרי בלעדיהם.

מגבלות

  • act הוא חיקוי טוב מאוד של המריצים של GitHub, אבל לא מושלם: פעולות שזקוקות לשירותים המתארחים ב־GitHub, לסודות או לתמונות מריץ חריגות עשויות להתנהג אחרת. ירוק מקומי הוא ראיה חזקה, לא ערובה.
  • ריצה אחת בכל פעם לכל מאגר; התחלת ריצה נוספת מבטלת את הראשונה.
  • ריצות ברמת תהליך העבודה בלבד — בחירת משימות בודדות, מטריצות או אירועים היא הטריטוריה של act; הריצו אותו ב־טרמינל המשולב כשאתם זקוקים לדגלים.
  • הריצה הראשונה מורידה תמונות של מריצים — צפו לכך שתהיה איטית, פעם אחת.

ראו גם: אירוח ובקשות משיכה · טרמינל משולב

שיפור התרגום הזה ב־GitHub