בניות ובדיקות ליליות ו־VirtualBox

ב־27.10.2010, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים, סימולטורים, CppCMS; ‏7 תגובות

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

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

כנ"ל CppCMS, אפילו שיש לי מערכת Unit-Tests שלמה, מידי פעם יש פספוסים בשחרור גרסה. וזה ברור: כשאתה מנסה לתמוך ב־GCC החל מ־3.4 עד 4.5, בקומפיילר של MSVC ושל Intel ב־Solaris‏, Linux‏, BSD‏, Mac OS X ו־Windows אז משהו בתוך כ־40 אלף שורות קוד חייב להישבר.

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

בכל מקרה, בניתי סקריפט, שרץ מתוך crontab ומעלה מכונה וירטואלי, מתחבר אליה דרך ssh מריץ תסריט בניה וטסט ואז מוריד אותה באופן אוטומטי וכך לכל למכונה (למעשה Solaris ו־FreeBSD).

כאשר ניסיתי לעשות את אותו הטריק עם XP הסיפור הפך להיות מתסכל, בשרת FreeSSHD פשוט לא הצלחתי לבצע password-less login על־אף מאמצים רבים וקריאת התיעוד. בכל מקרה, המוצר הזה השאיר לי תחושה של מוצר "חצי־אפוי" כי הוא לא תמיד התנהג כמו שהוא אמור.

אחר־כך ניסיתי copssh, גם הוא היה כישלון טוטלי מכיוון שלא הצליח להעלות סרביס של ssh עם הודעות שגיאה על הרשאות ומשתמש ב־Even Log. החיפושים ברשת לא הניבו תוצאות. אז עברתי לגישה אחרת.

העתקתי את התסריט וכל הקבצים הנדרשים לשרת Samba והכנתי תסריט bat שרץ בחלונות וניגש תיקיה עם עליית המערכת. אם הקובץ נמצא, הוא בונה גרסה ומריץ טסטים, לאחר מכן שם את התוצאות באותו שרת ה־samba. עקום, אבל איכשהו עובד (כמו כל דבר אחר בחלונות...)

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

תגובות

cP, ב־27.10.2010, 23:22

בהחלט עבודה מרשימה! שאפו.

שי, ב־28.10.2010, 1:05

אם זה כבר עובד, זה כבר עובד, אבל אני הייתי מתקין cygwin על החלונות הוירטואלית ומריץ שרת SSH נורמלי.

ליבוביץ, ב־28.10.2010, 8:20

sshd של cygwin עבד לי. אבל אם אתה בחלונות, תעבוד כמו בחלונות, שים שרת http שיריץ לך פקודה ב-CGI כשתגיד לו, ותריץ rsync, נגיד, בשביל להעביר לו את הקוד (שזה רעיון טוב גם למכונות יוניקס ד"א).

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

ליבוביץ, ב־28.10.2010, 8:20

וקישור שכחתי http://en.wikipedia.org/wiki/Windows_Management_Instrumentation

ארתיום, ב־28.10.2010, 10:00

אבל אני הייתי מתקין cygwin על החלונות הוירטואלית ומריץ שרת SSH נורמלי.

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

בכל מקרה corssh הוא למעשה "מיני הפצת cygwin" שמיועדתי ל־ssh בלבד.

a, ב־28.10.2010, 12:36

אולי תשחרר את מערכת הבדיקות עצמה? אני בטוח שיש לציבור עניין בכך.

ארתיום, ב־28.10.2010, 15:33

אולי תשחרר את מערכת הבדיקות עצמה?

הקוד נמצא תחת tools בפרויקט CppCMS אבל זה לא ממש "מערכת בדיקה" מדובר בסה"כ בתסריט bash תפור במיוחד לצרכים שלי ולסביבת העבודה שלי. לא מדובר ב"מערכת בדיקות כללית".

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים