חלק 1 – עדכון גרסה צעד אחרי צעד

הקדמה קצרה –

למי שלא מכיר- היום חלק גדול מעולם התיכנות ופיתוח המערכות מבוסס בצורה מלאה או חלקית על שיטת Agile .

מבלי להיכנס לעומק העניין, השיטה מייצגת שיטת פיתוח זריזה (=Agile) שמתבטאת בהעמדת מערכת ראשונה של התוכנה (ולא משנה באיזו פלטפורמה) שבדרך כלל ייקרא MVP, כלומר המוצר המינימלי שנותן מענה על הרעיון.

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

שיטה זו שונה משיטות אחרות מסורתיות כמו Waterflow – "מפל" שמגדירות תיכנון מאוד ארוך ויסודי של המוצר, וכשעובדים לפי שיטות אלו  – תהליך הפיתוח הרבה פעמים ארוך יותר.

שיקול הדעת בין השיטות הוא עסקי ומחוץ להיקף של מאמר זה.  

בכל מקרה – עניין זה יצר את הצורך בתהליכי עבודה שמאפשרים "התקנה מתמשכת" , כלומר שגרת עבודה קבועה שגורמת העלאת גרסה לאוויר לעיתים תכופות.

פריסה אוטומטית – Automatic Deployment – ואיך עשינו אותה אצלנו

ראשית – מה זה Deployment = פריסה?

תשובה- זה התהליך של העברת המוצר התיכנות לסביבה של ה"ייצור" – Production שבה משתמשים לקוחות הקצה. לדוגמא אם זו אפליקציה יש לה איזה איזור בסטור שהמתכנתים יודעים להעלות אותה. אם זה WEB – יש איזה ענן שמחזיק אותה. וכן הלאה.

כמו שהוזכר למעלה הרצון היום בתעשייה זה ליצור תהליכי פיתוח מתמשכים עד ההעלאה של המוצר –
CI/CD  בשפה מקצועית.

ניתן לקרוא פה לעומק על המשמעות של המושג והתהליך הזה.

https://www.redhat.com/en/topics/devops/what-is-ci-cd

תהליך ה-Deployment לעיתים דורש מספר תהליכים ידניים. לדוגמא:

  1. למשוך את הקוד המעודכן
  2. לעדכן אותו
  3. להעתיק אותו במידת הצורך לספרייה אחרת שממנה הוא רץ.
  4. להריץ אותו מחדש
  5. לבדוק שעובד תקין.

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

ה- Use Case שלנו

אצלנו בYIM-Programming אנחנו בין השאר מייצרים מערכות מידע לחברות ועסקים. בפרוייקט שכרגע אנחנו עובדים עליו רצינו ליצור Pipeline – תעלה, ככה שמרגע העלאת הגרסה החדשה לגיטהאב –  בקלות נוכל לעדכן את הגרסה על הענן והיא מעצמה תתרענן!

בצורה כזו אנחנו חוסכים התעסקות רבה בתהליך ה-Deployment .

הפיתרון ב- Jenkins

לצורך זה השתמשנו ב- Jenkins . ג'נקינס הוא כלי שמותקן על הענן שתומך ביצירת כל הזרימה של התהליך הזה.

במאמר זה אציג את סדר הפעולות שצריך לעשות כדי להעלות גרסה ככה שתוכלו לראות כמה זה פשוט.

במאמר הבא אי"ה בל"נ אציג את מה שזה עושה מאחורי הקלעים.

המצב של תהליך כל כך פשוט זה התוצאה הכנה של התהליך שעשינו לפני זה.

בהכנת התהליך לא ניגע במאמר הזה, אבל ניתן לקבל רקע מכאן:

https://medium.com/@abderrahimfazazi/set-up-ci-cd-using-jenkins-for-your-nextjs-app-db933ac87e93

אנחנו עובדים מול Cloud שמכיל Droplet של Ubuntu על ספק השירותים – Digital Ocean .

זה התהליך:

איך לעדכן גרסה צעד אחר צעד בקלות ?

נניח לצורך ההסבר שהענן שלנו יושב על ה-IP

195.32.698.254

דוחפים את הקוד לריפוסיטורי בגיטהאב (Github Repository)

נכנסים לג'נקינס:

http://195.32.698.254:8080/

מריצים את הpipelline הזה:

זה מתחיל תהליך עדכון – ואחריו – הגרסה אמורה להתעדכן.

כדאי כמובן לעקוב- נכנסים לתוכו, ובוחרים את הbuild שבבניה

אם לוחצים על הConsole Output ניתן לראות את התהליך רץ:

אם זה עבד תקין – נצפה לראות בסוף את האישור:

כעת אם נלך לאתר, נצפה לראות את השינויים שהוספנו

לפני:

אחרי:


על היוצר:

יזהר משקיף, CEO & CTO ב-פירמת התוכנה YIM-Programming

YIM-Programming  בית התוכנה מהמובילים בישראל.

YIM-Programming הוא בית תוכנה שמספק פתרונות לבעיות שונות של עסקים.

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

נשמח לתת לכם חוות דעת ראשונית על הבעיות שמטרידות אתכם.

ליצירת קשר:

 yimprogramming@gmail.com
 054-7477637

YIM Programming – The Way We're Doing Things

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *