איך לממש תהליך פיתוח ודילוור גמיש ומהיר בלי להיות מומחה לתשתיות\לעבוד קשה
-
אני מחפש את הדרך הנכונה או הכי פחות כואבת, לפתח\לתחזק אפליקציית FS שכל כולה באחריותי (נניח לצורך הדוגמה שהיא מבוססת vue - node/express - mongo), ולדלוור את השינויים לשרת (דרך SSH) בלי בלאגן (שיהיה כזה npm run deploy.. ).
לצורך הפשטות נניח שניהול הגרסאות הוא בGIT לוקלי, ואין הבדל בין המערכת שלי לזו שבשרת. כמובן שהמציאות הרבה יותר מורכבת, וגם docker מעורב (אם זה רק עוזר - הכי טוב).
כרגע התהליך שישנו מורכב מהרצה של כמה וכמה פקודות, בסביבת הפיתוח ,וגם בשרת, אשמח להצעות ייעול (לפרוייקטים עתידיים בעיקר). -
אני משתמש בגיט. לא גיט מקומי אלא שירות של גיט כמו גיטאב וגיטלאב (מסיבות שונות אני אישית משתמש בשניהם..).
אני יוצר לרפוזיטורי Deploy Keys כך שלשרת תהיה הרשאת גישה להוריד.
אני יוצר קובץ sh עם פקודות פשוטות לgit fetch ומה שצריך בשביל לעדכן ולהפעיל את האפליקציה מחדש (ואם צריך migration לDB וכולי).
אחרי זה מבחינתי זה ממש כמו npm deploy.
אשמח שתפרט את הקווים העיקריים של המורכבויות שאתה מתאר בהבדלים בין השרת לקליינט, לא אמור להיות כה מסובך.
(אני מניח שאתה משתמש עם קבצי קונפיגורציה נפרדים לייצור ולפיתוח שהם אינם מסתנכרנים בגיט). -
קודם כל, כדי לעזור לך למצוא יותר מידע בגוגל, ראוי להזכיר את המונח המקצועי - CI/CD.
שנית, לשמור שינוים בשרת GIT זה פרקטיקה מומלצת בכל מקרה.תוכל להוסיף github action שמבצע בילד, מתחבר בSSH לשרת ומריץ סקריפט עדכון.
אם אתה משתמש בדוקר בכל מקרה, תהליך הבניה צריך לכלול אותו, דחיפה לריגסטרי, והפעלה של הקונטיינר החדש.
מצרף מ"מ לactions הרלוונטיים, מקווה שיהיה לתועלת.
https://github.com/marketplace/actions/build-and-push-docker-images
https://github.com/marketplace/actions/docker-remote-deployment -
חשבתי על פתרון נוסף, אם כי לא הייתי בוחר בזה כהדרך ה"נכונה"
תוכל להריץ docker build על השרת ישירות מהלפטופ, כלומר הcontext (קבצי הקוד שלך) מועלה לשרת, והבילד בפועל מתבצע בשרת ככה שפעולות כמו הורדת ספריות וכו מרוויחים ממהירות האינטרנט של השרת.
אני משתמש בזה לסביבת טסטים של פרויקט מסוים, וזה נח.
א.docker context create develop --docker "host=ssh://aaron@develop"
(אחרי שכמובן הגדרתי ב~/.ssh/config
את פרטי החיבור)
ב.docker context use develop
ג.docker compose up -d --build
בונוס: התוסף של vscode לcompose, בלי לצאת מהעורך קוד והעלית גרסה..
https://code.visualstudio.com/docs/containers/docker-compose -
@aaron כתב באיך לממש תהליך פיתוח ודילוור גמיש ומהיר בלי להיות מומחה לתשתיות\לעבוד קשה:
docker context use develop
תודה, לא הכרתי את זה.
@dovid כתב באיך לממש תהליך פיתוח ודילוור גמיש ומהיר בלי להיות מומחה לתשתיות\לעבוד קשה:
אשמח שתפרט את הקווים העיקריים של המורכבויות שאתה מתאר בהבדלים בין השרת לקליינט
משום מה להיות תלוי בשירות חיצוני לא נשמע לי יותר בריא. אבל נשמע מכם שאני לגמרי טועה.
למשל אם לא משתמשים ברגיסטרי של דוקר, זה הופך להיות באמת מורכב כל פעם למחוק את הקונטיינר הקודם, את הimage והכל מחדש.@aaron כתב באיך לממש תהליך פיתוח ודילוור גמיש ומהיר בלי להיות מומחה לתשתיות\לעבוד קשה:
לשמור שינוים בשרת GIT זה פרקטיקה מומלצת בכל מקרה.
כמובן שהפרוייקט נשמר בremote, אבל אין לזה קשר לCD מבחינתי..
בשני ההצעות הראשונות זה הופך להיות תלות מלאה, ואני מכיר את הדרכים האלו, ואכן כל מי שאני מכיר (שזה לא הרבה) משתמש בהם (אם זה הדרך הנכונה אז שיהיה ככה).
לתומי חשבתי שכל מה שאני יכול לעשות דרכם, אני יוכל לעשות גם בלעדיהם.