העלאת גרסאות לשרת מרוחק – deployment

העלאות גרסה (deployment) לשרת זה לא נושא חד משמעי בעיקר בשל ריבוי השיטות והאמצעים בהם ניתן להשתמש.אני בתור התחלה רוצה לדבר על האיך לפני המה.

Measure Twice. Automate Once

כמו שבפיתוח יש משפט נפוץ “Think twice, code once” כך אותו דבר כשהופכים תהליכים ידניים לאוטומטיים, יש להתחשב בכלל הגורמים כשמתכננים אוטומציה. האם סוגי הקבצים השונים מתאימים לתהליך? האם מתאים לworkflow של הפרויקט? ועוד.

חסרונות בהעלאת גרסה ידנית לעומת יתרונות באוטומציה

You’re either the one that creates the automation or you’re getting automated.

Tom Preston-Werner

בהרבה מחברות בניית האתרים שעבדתי איתם תהליך העלאת הגרסה עבר כך:

  1. יצירת תיקייה חדשה במחשב
  2. בחינה והעתקה של קבצים המיועדים לגרסה לתיקייה
  3. גרירה של הקבצים לFTP client
  4. בדיקת הגרסה

יש הרבה בעיות בשיטה הזו, אצביע על כמה:

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

אפשר להימנע מכל הבעיות האלו ע”י שימוש בGit בהעלאת גרסה.

הקמת repo בשרת

עכשיו ניצור “bare repository” של Git – ללא קבצים פיזיים. תכל’ס הוא פשוט מכיל את כל מה שיש בתוך תיקיית .git בדרך כלל, אפשר לקרוא לתיקייה זו בכל שם שתרצו אך בדרך כלל כדי לדבוק ב convention עדיף לקרוא לזה בשם הפרויקט עם סיומת של .git ע”מ שנוכל להבין שזה repo:

הוספת hook של post-receive

הקוד הזה יבוצע כל פעם שידחפו לrepo הזה קוד. הקובץ עצמו ממוקם ב project.git/hooks והוא נקרא בשם post-receive, תוכלו להשתמש בעורך החביב עליכם ע”מ ליצור ולערוך אותו.
באופן בסיסי מה שהקוד עושה זה לבדוק שאתם פורסים את הקבצים של הbranch המורשה מבחינתכם לסביבה הנוכחית ובמידה וכן הוא פורש את כל הקבצים הנצרכים לתיקיית הפרויקט שהוגדרה:

באופן אישי בסביבות QA אני לא מגביל את הbranch המורשה ופורס כל דבר שדוחפים:

לאחר מכן צריך לתת הרשאות הרצה לקובץ:

יצירת remote במחשב הלוקאלי

אנחנו צריכים לקנפג את הנתיב לrepo בשרת המרוחק בremote:

אז עכשיו אנחנו רוצים לשלוח את כל הקבצים שלנו לשרת:

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

continuous delivery means minimizing lead time from idea to production and then feeding back to idea again

Rolf Andrew Russell

3 thoughts to “העלאת גרסאות לשרת מרוחק – deployment”

  1. יפה מאוד,
    נשמע כמו התחלה טובה ובסיס בריא בפיתוח ווב.
    כל הכבוד

    תגיד מדוע תיקיית הuploades שלך חשופה לעולם…..?

    1. תודה רבה משה 🙂

      לא יודע אם זו באמת בעיית אבטחה אבל חסמתי ליתר ביטחון, תודה על הטיפ

כתיבת תגובה

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