שליחת שינויים לליבה

איך מוסיפים שינוי לליבת WIZZO CMS: ענפים, הודעות commit, Pull Request, העלאת גרסה, מה נבדק ומה אסור

⏱ 4 דק' קריאה 698 מילים ערוך דף זה ב-GitHub

הדף מתאר את הדרך מתיקון בקוד ועד שהוא ב-main של הריפו wizzo-products/wizzo50_core, ומשם ללקוחות בעדכון הגרסה. הוא נכתב למי שיש לו גישת כתיבה לריפו. מי שאין לו גישה פותח את השינוי כ-fork או כ-patch ומוסר אותו לצוות.

מידע

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

המעגל בקצרה#

  1. מסתעפים מ-main העדכני.
  2. עובדים באתר מקומי שמצביע על הריפו (ראו זרימת עבודה).
  3. מעלים את api/core/version.txt ב-0.0.1.
  4. פותחים Pull Request אל main, ממזגים אותו כ-merge commit.
  5. הגרסה החדשה זמינה לאתרי הלקוחות דרך עדכון גרסה (ראו עדכוני גרסה).

ענפים#

  • ענף חדש לכל שינוי, מ-main, לא ענף ארוך חיים.
  • שם קצר וברור, למשל fix-<נושא>-<מספר משימה> או feature-<נושא>. בענפי הריפו הקיימים נפוצה גם התבנית chat-<מספר>-<נושא>.
  • לא עובדים ישירות על main. וגם לא מכוונים watch:api או publish:api לשרת ה-master מתוך ענף שלא נבדק (ראו האזהרה בזרימת עבודה).
  • לפני כל Pull Request ממזגים את origin/main לענף, כדי שלא תדרסו שינוי שנכנס בינתיים. מזגתם וקיבלתם התנגשות: פותרים בשמירה על שני הצדדים. אם לא ברור איך, שואלים את מי שכתב את הצד השני במקום לבחור צד שלם.

הודעות commit#

השורה הראשונה מתארת מה השתנה, והיא קצרה מספיק לקריאה ברשימת ההיסטוריה. הנוהג בריפו:

[TICKET-1234] core 5.0.116: תיאור קצר של מה שהשתנה ולמה
  • בתחילת השורה מזהה המשימה בסוגריים מרובעים.
  • שינוי שיוצא ללקוחות נושא את מספר הגרסה החדש (core 5.0.N).
  • בגוף ההודעה, כשצריך: ההקשר, הסיבה, ומה נבדק.
  • לא מכניסים סודות להודעה (טוקנים, כתובות פנימיות, סיסמאות).

העלאת גרסה#

הגרסה נקראת מהקובץ api/core/version.txt (שורה אחת, למשל 5.0.115). אתרי לקוח מזהים שיש עדכון לפי השוואה בין הגרסה שלהם לגרסה שבקובץ הזה ב-master.

  • כל PR שמשנה קוד ב-api/core/ או ב-api/js/ מעלה את version.txt ב-0.0.1.
  • שני ענפים שמעלים לאותו מספר יוצרים התנגשות: אחד מהם צריך לעבור למספר הבא אחרי המיזוג. זה קרה כבר (גרסאות 5.0.79 ו-5.0.110 נתפסו פעמיים). לכן ממזגים את main מיד לפני שבוחרים מספר, ובודקים מה המספר האחרון.
  • שינוי שאינו קוד ליבה (דפי תיעוד תחת website/, מסמכים תחת docs/) לא מעלה גרסה.
  • חוקי הגרסאות והערוצים (latest, stable) מפורטים בניהול גרסאות.
שימו לב
version.txt הוא מה שמפעיל את חוויית העדכון בכל הצי. העלאת גרסה ל-main שלא נבדקה היא העלאה שכל אתר לקוח יציע להתקין.

Pull Request#

  • ה-PR נפתח אל main ב-wizzo-products/wizzo50_core.
  • הכותרת כמו שורת ה-commit הראשונה.
  • התיאור עונה על שלושה דברים: מה השתנה, למה, ואיך נבדק (ראו בדיקות).
  • ממזגים עם merge commit (gh pr merge <PR> --merge), לא squash ולא rebase, כדי שההיסטוריה של הענף תישמר.
  • PR נשאר פתוח רק כל עוד הוא נסקר. קוד שנשאר בענף פתוח לא קיים ל-main, ומי שיסתעף מ-main יעקוף אותו או ידרוס אותו.

מה נבדק לפני מיזוג#

כיום זו רשימה ידנית של מי שמגיש ושל מי שסוקר:

בדיקהאיך
תחביר PHP תקיןphp -l על כל קובץ ששונה (ראו בדיקות)
האתר המקומי עולהטעינת עמוד ציבורי ועמוד ניהול בלי שגיאה
core_ping עונההגרסה והמצב נכונים (ראו זרימת עבודה)
תקן הקודתקן קוד: DB, אבטחה, CSS לוגי
שינוי ב-JS או SCSSנבדק בדפדפן, גם בכיוון RTL
תיעודאם השתנתה חתימה, מפתח הגדרה או שם טבלה, דף הרפרנס מעודכן באותו PR

מה אסור להכניס#

  • סודות: סיסמאות, מפתחות API, טוקנים, קובצי .env. הם לא נכנסים לריפו גם "זמנית". נכנס סוד בטעות: ההיסטוריה של git שומרת אותו גם אחרי שמסירים אותו, ולכן מחליפים את הסוד עצמו (rotate) ומדווחים לצוות.
  • קבצים בינאריים כבדים: ZIP, גיבויים, סרטונים, ספריות מוכנות. *.zip ב-.gitignore מסיבה זו. ספריות PHP נכנסות דרך Composer (ראו Composer).
  • DB::insert: הפונקציה לא קיימת. ראו תקן קוד.
  • עריכה של ספריות צד שלישי בתוך addons/ או libraries/ כדי לתקן להן באג. מתקנים על ידי עטיפה או החלפת הגרסה, ומתעדים.
  • .css שנוצר מ-SCSS. עורכים את .scss.
  • שינוי במבנה טבלאות ב-SQL שנכתב ביד בלי מנגנון ההגירה. שינויי סכימה נכנסים דרך מנגנון ה-update_db של עדכון הגרסה (ראו עדכוני גרסה), לא כ-SQL שמריצים ידנית בכל אתר.
  • קוד שמפעיל שליחה אמיתית (מייל, SMS, push) או קריאה חיצונית עם תופעות לוואי בזמן טעינה או בבדיקה.

ראו גם#

מצאתם טעות או חוסר? תקנו את הדף או פתחו Issue בריפו. התיעוד נכתב מתוך הקוד של ליבה 5.0.115.