DCSIMG
עמוד הבית| חבילות השירות שלנו| חומר חופשי| צור קשר
שיפור תפוקת צוות הפיתוח ללא עלויות – חלק ב' - בלוג היועצים של מיקרוסופט ישראל

בלוג היועצים של מיקרוסופט ישראל

שיפור תפוקת צוות הפיתוח ללא עלויות – חלק ב'

בפוסט קודם בנושא, דיברתי על האופציה שבכל פעם שמבצעים checkout יתבצע get latest version, כך שכברירת מחדל תמיד נעבוד על עותק מעודכן של הקובץ.

היום אני רוצה לדבר על נושא קצת “מורכב” יותר ויחד עם זאת בעל אפקט רב יותר בעיקר בסביבה בא קיימים מספר צוותים שעובדים על חלקים שונים של אפליקציה.

Build & Continuous Integration

מה זה Build?

כאשר אני מדבר על build אני מתכוון לתהליך Build המנוהל ומטופל ע”י TFS.
במה שונה תהליך Build מ – Build שאנחנו מבצעים ב – (Ctrl+F5) Visual Studio?
ביצוע ה – (Ctrl+F5) build הוא רק חלק בתהליך build שמנוהל ע”י TFS. בתהליך ה – Build מתבצעות מספר פעולות בסיסיות:
- שליפת הקוד המעודכן משרת ה – (get latest version) TFS
- ביצוע build
- הרצת Unit Tests
- העתקת התוצרים לספריה מסויימת
- יצירת ושליחת דוח מסכם

כמובן שניתן להוסיף/לשנות פעולות.

על מנת ללמוד יותר על נושא של TFS Builds ראה…

 

מה זה Continuous Integration?
הרעיון הוא ביצוע בדיקות אינטגרציה של הקוד של האפליקציה שלנו באופן שוטף וסיסטמתי.

איך?
עיקר בעיות האינטגרציה קורות כאשר מבצעים שינוי במודול A, אבל משתמשים בתוצרים שלו (dlls) במודול B. מי שמפתח את מודול B לא יודע שהיה שינוי ב- מודול A וממשיך לפתח מול dll שאינו מעודכן.

אז?
אז אם נוכל להריץ תהליך build בכל פעם שמתבצע שינוי, נדע על בעיות אינטגרציה ברגע שהן קורות.

איזה מזל!!! ניתן להגדיר לתהליך ה – build לרוץ בכל פעם שמתבצע checkin. מאחר ותהליך ה- build מבצע get latest version לפני כל ריצה, נוכל לקבל אינדיקציה מיידית על בעיית אינטגרציה.

 

ושוב, בהנחה שצות הפיתוח עובד בסביבת Team System, אתם חוסכים הרבה כאב ראש, זמן וכסף וזה לא עולה כלום…

 

ועוד דבר אחד…
הרבה פרוייקטים/ צוותי פיתוח שעבדתי איתם מאוד רצו לבצע תהליכי build אבל לא ידעו איך… התהליך מאוד פשוט וניתן ללמוד גם כאן.
כמובן שאם למישהו יותר נוח ליווי “אנושי”, תמיד אשמח לסייע :-)

 

בהצלחה,

טל

 

חומר נוסף:

Team Foundation Build Walkthroughs

  

שירותי MCS רלוונטיים

  • (PDF) שירות ניתוח פערי ארכיטקטורה
  • (PDF) שירותי ניהול מחזור חיים של אפליקציה – ALM
  • פורסם: Feb 14 2010, 07:35 AM by Tal Ben-Shalom | with 7 comment(s)
    תגים:, ,

    תוכן התגובה

    alikl כתב/ה:

    אני מניח שלא תהיה בעיה גם להגדיר להריץ בדיקות העמסה לאחר ביצוע ה-BUILD

    כך ניתן יהיה לדעת אם נושא הביצועים נפגע או לא

    # February 14, 2010 10:10 AM

    memil כתב/ה:

    טל,

    מנסיונך - האם כדאי אכן להריץ בכל Build את כל ה- Unit Tests, או שבמצבים מסויימים זה עלול להכביד מאוד על ה- Build ועדיף להריץ רק חלק מהבדיקות?

    # February 14, 2010 2:08 PM

    Tal Ben-Shalom כתב/ה:

    ממי, נקודה חשובה. אתה תופתע מהתשובה - תלוי...

    זהו נושא לפוסט נפרד...

    בתהליך של Continuous Integration, כברירת מחדל לא הייתי מפעיל UNIT TESTS בכלל. unit tests הייתי מפעיל בתהליך אחר שרץ בלילה (nightly build).

    # February 14, 2010 2:45 PM

    Erez Pasternak כתב/ה:

    כמובן שמי שרוצה לעבוד בסביבה גרפית ונוחה יכול לצרף לTFS את Final Builder  שיודע להתחבר יפה לTFS ונותן המון כלים , אנחנו כבר כמה שנים משתמשים בזה וזה נוח מאד

    # February 14, 2010 8:12 PM

    cobyp כתב/ה:

    לדעתי הרצת בדיקות יחידה כחלק מתהליך של CI יכול להתאים במצבים מסויימים. בבדיקות יחידה יש שני תנאים שרצוי למלא על מנת שיהיו אפקטיביות. הראשון הוא אוטומציה והשני שירוצו מאוד מהר. לכן, לא אמורה להיות בעיה להריץ אותן במסגרת תהליך ה- build של ה- CI. השאלות שצריך לשאול הן על איזה branch מדובר? MAIN, DEV אולי אחר וכיצד הוא מתנהג. במידה ומדובר על branch עליו יש מס' מצומצם של מפתחים, ייתכן ואין צורך אולם על branch שמרכז אליו עבודה של הרבה מפתחים, בהחלט שווה לשקול הרצה של Unit Tests ואף  הייתי מוסיף מס' בדיקות כמו Code Coverage, Code Metrics וכו'.

    # February 14, 2010 11:35 PM

    Tal Ben-Shalom כתב/ה:

    קובי, אני בעד ש- CI יהיה כמה שיותר lite ולהגדיר build אחר שיבצע פעולות נוספות.

    אולי תכתוב לנו פוסט על Code Coverageו/או Code Metrics?

    # February 15, 2010 3:57 PM

    cobyp כתב/ה:

    טל,

    רעיון מצוין. פוסט על Code Coverage ,Code Metricsאו Quality Gates. בקרוב...

    # February 15, 2010 4:53 PM
    שלח תגובה

    (שדה חובה)  

    (שדה חובה)  

    (אופציונלי)

    (שדה חובה) 

    Please add 8 and 2 and type the answer here:


    Enter the numbers above: