מערכת Continuous Integration ו־Continuous Deployment

תיאור כללי

מערכת CI/CD (או Continuous Integration/Continuous Deployment) היא מערכת שמבצעת פעולות כשעושים push לקוד חדש אל תוך הפרויקט שלנו.

מה ההצעה כוללת?

  1. הרצת הבדיקות לכל קוד שנכנס, כדי לבדוק שהבדיקות לא שוברות את הפרויקט.
  2. הרצה אוטומטית של flake8, כדי לוודא שכל הקוד שנכנס לפרויקט תואם ל־PEP 8 ונראה טוב.
  3. פרסום סטטיסטיקות coverage ב־PR כתגובה באופן אוטומטי – כדי לוודא שה־coverage לא ירד בעקבות ה־PR.
  4. אם הקוד עובר merge לענף main – העלאה של הקוד לשרתים שלנו, כדי שנוכל לראות את השינויים שהתרחשו.

כולל שינויים בקוד? אם כן, איפה?

לא ישירות בקוד הפרויקט, אבל כן בקוד שמעליו.
אני הולך להשתמש בטכנולוגיה שנקראת GitHub Actions שמתועדת פה.
השימוש ב־GitHub Actions לצורך CI/CD מתועד פה.

לצורך פרסום סטטיסטיקות ה־Coverage, אני הולך להשתמש ב־Codecov, כיוון שיש לי ניסיון חיובי באינטגרציה שלהם ל־GitHub ב־LMS.

לצורך העלאת הקוד המוכן לשרת, אני הולך להקים לנו שרת ב־Google Cloud, להקצות Static IP למכונה ולנתב את הכתובת calendar.pythonic.guru בעזרת A Record בשירות Route 53 של AWS, שם רשום כרגע הדומיין Pythonic.guru.

האם יהיו שינויים במסד הנתונים? אם כן, איפה?

לא, השינוי הזה לא תלוי במסד הנתונים ולא יגרור בו שינוי.

האם יהיה שינוי ב־frontend? אם כן, איפה?

לא, השינוי הזה לא תלוי ב־frontend ולא יגרור בו שינוי.

אילו טסטים יגרמו לטיקט להיחשב כ"עובד", ויאפשרו לנו לסגור את הטיקט ולהגדיר את המשימה כהושלמה?

לצערי אין unittests ששווה לכתוב עבור הטיקט הזה.

עם זאת, יהיה אפשר להגיד שסיימתי את המשימה כאשר:

  1. בכל דחיפת קוד ל־master, יראו את השינויים מיידית ב־https://calendar.pythonic.guru.
  2. בכל דחיפת קוד לכל branch בפרויקט, נוכל לראות תגובה של הבוט של codecov עם אחוזי ה־coverage לפרויקט.
  3. בכל דחיפת קוד לכל branch בפרויקט, ירוצו הבדיקות של הפרויקט ו־flake8. אם אחד מהם נכשל, יהיה סימון ברור של הכישלון ב־PR ולא יהיה אפשרי לעשות merge ל־PR.
18 לייקים

5 לבבות - ניתן להתקדם :upside_down_face:

לייק 1

מבקש מיו"ר הפורום אישור בדיקה

12 לייקים

:rofl: :rofl: :rofl:

אפשר להכניס את אחמד טיבי לפרויקט? Hidden gem

ראיתי את זה פעם מזמן, הוא ענק :slight_smile:

מאשר :wink:


קיבלת :slightly_smiling_face:

אפשר שתעשה את זה בלייב/מוקלט?
זה נשמע לי ממש מעניין

2 לייקים

אפשר לעבוד על הטיקט הזה?

אני כבר עובד עליו (:

מעדכן שפרט ל¯CD (עדכון אוטומטי של האתר בדחיפה למאסטר) הכל מוכן, והאתר זמין ב¯ https://calendar.pythonic.guru
הבדיקה האוטומטית של flake8, טסטים ו¯coverage אמורה לעבוד גם היא.

מציג שגיאה:

502 Bad Gateway

כן, המשכתי לעבוד על זה בכמה שעות האחרונות כיוון שהייתה בעיה עם ה־https.
פתרתי אותה עכשיו ואמור לפעול כראוי

לייק 1