JavaRush /בלוג Java /Random-HE /אינטגרציה מתמשכת
Nikita Koliadin
רָמָה
Днепр

אינטגרציה מתמשכת

פורסם בקבוצה
שלום רב, עמיתים! נמאס לכם להכריח את המחשב שלכם כל הזמן לבנות פרויקט? אז המאמר הזה בשבילך! אינטגרציה מתמשכת - 1במאמר זה אנסה להציג בקצרה וברורה את החומר לגבי אינטגרציה מתמשכת (להלן פשוט CI), אענה על שאלות פשוטות כמו: "מה זה?", "למה?" ולמה?" ואתן דוגמה לפרויקט מבחן. מאמר זה מיועד למשתמש מנוסה שלפחות מכיר את Build System: Maven , יודע להשתמש ב-Git ויודע לדחוף פרויקטים ל- GitHub ;

"מהי אינטגרציה מתמשכת?"

בואו נראה מה וויקי מספרת לנו על השאלה הזו : אינטגרציה מתמשכת (CI, English Continuous Integration) היא פרקטיקת פיתוח תוכנה המורכבת ממיזוג עותקי עבודה לענף פיתוח ראשי משותף מספר פעמים ביום וביצוע בנייה אוטומטית תכופה של הפרויקט עבור מוקדם איתור פגמים פוטנציאליים ופתרונות לבעיות אינטגרציה. מפחיד, לא? בואו ננסה להסביר את המונח הזה במילים פשוטות: אינטגרציה מתמשכת היא מערכת לבנייה ובדיקות אוטומטיות של תוכנות עם הגדרות מסוימות במכונות מסוימות על מנת לזהות באגים ואי תאימות. אוקיי, אין בעיה, הבנו את זה, אבל עולה השאלה ההגיונית הבאה:

למה אנחנו צריכים CI?

בואו רק נדמיין שאתם כותבים פרויקט גדול, ויש צורך להוסיף/לשנות פונקציונליות. אתה כותב את זה בהצלחה, כותב מבחנים, משיק אותו, ונראה שהכל בסדר, אבל לא. ישנם מצבים שבהם שינוי בפונקציונליות אחת משפיע על אחר, על אחר על שלישי וכן הלאה, עד שבאג מחליק לאנשהו ומתרחשת שגיאה. כן, אתה יכול לומר שזה ככל הנראה פרויקט מעוצב בצורה גרועה, ויכול להיות שאתה צודק, אבל מה אם הוא לא, והחיבורים האלה באמת צריכים להיות שם? ומה אם אתה כותב ויוצר פרויקט יותר מפעם אחת, וזה קורה לעתים קרובות? עשיתם בדיקות על הפונקציונליות החדשה שנכתבה, והם נתנו תוצאה חיובית. עשית התחייבות מהירה, ואז דחפת לאנשהו וכבר חושבים איך תעשן סיגר בבית תוך כדי שתיית וויסקי יקר, אבל לא. אבוי, הקולגה שלך, או הבוס, לא משנה מי, אומר שבגלל ההתחייבות שלך, כל המבנה קרס. אתה אומר בתמיהה שאתה מתכנת, בדקת הכל. אבל לעתים קרובות פשוט אין זמן לבדוק כל הזמן את כל הפרויקט, ובדקת רק את קטע הקוד שלך שביצעתם בו שינויים, ולא את כל המכלול בכללותו. זה המקום שבו CI בא לעזרתנו. עם כל דחיפה לכל משאב, CI יבנה את הפרויקט שלך מאפס, תריץ את כל הבדיקות, ורק אם כל הבדיקות יעברו והפרויקט נבנה, ה-build יקבל סטטוס עובר . אחרת תהיה לך הזדמנות לעשות קאמבק ולראות מה השתבש. אז, הגיע הזמן לשאול את השאלה "למה זה ולא אחרת?" ותסתכל על יישום התוכנה. דוגמה כפי שכבר אמרתי, המאמר מיועד למי שמכיר את Maven ו-Git. לכן, אני מקווה שאתה יודע איך ומה אני עושה מלבד הקמת CI וכו'.
  1. ראשית, בואו ניצור פרויקט מבחן פשוט של מייבן וניצור בו כיתה שמדפיסה "Hello World!" ומבצע פעולה פשוטה כלשהי, ובואו נכתוב את המבחן הפשוט ביותר עבור המחלקה הזו.

    כתוצאה מכך, צריך להיות לנו מבנה פרויקט פרימיטיבי:

    אינטגרציה מתמשכת - 2

    כל המקורות יהיו ב-GitHub שלי. זה לא משנה מה אתה כותב ב-Main שלך ואיזה מבחנים יהיו.

  2. אנחנו דוחפים את הפרויקט שלנו ל-GitHub.

  3. עכשיו מגיע החלק הכיפי. מ-CI בחרתי ב-Travis CI בגלל הזמינות והאמינות שלו. טראוויס משתמש ב-GitHub כדי לארח את קוד המקור שלו.

    אז, עבור לאתר Travis CI והיכנס דרך GitHub. בפרופיל אנו מחברים את הפרויקט שלנו:

    אינטגרציה מתמשכת - 3

    הכל מוכן להרכבה בכל דחיפה, אבל השאלה היא איך מרכיבים?

  4. אנו חוזרים ל-IDEA האהוב שלנו ויוצרים קובץ .travis.yml

    קובץ זה אחראי לתצורת הבנייה של Travis. בואו נסתכל על ההגדרה הפופולרית ביותר:

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

    כך אמורה להיראות תצורה טיפוסית של Travis:

    # https://docs.travis-ci.com/user/languages/java/
    language: java
    jdk: oraclejdk9
    
    # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects
    cache:
      directories:
      - $HOME/.m2
    
    # Notifications https://docs.travis-ci.com/user/notifications/
    notifications:
      email:
        recipients:
          - qThegamEp@gmail.com
        on_success: always # default: change
        on_failure: always # default: always

    הוספתי הערות, עם קישורים, למען הבהירות.

  5. אנו דוחפים שוב ל-GitHub ופותחים את אתר Travis , בוחרים את הפרויקט ועוקבים אחר ה-build. כתוצאה מכך, אנו מקבלים הודעה על בנייה מוצלחת:

    אינטגרציה רציפה - 4 אינטגרציה מתמשכת - 5

    כמו כן באתר נוכל לראות תג עם ההרכבה המוצלחת של הפרויקט שלנו, אותו נוכל להכניס ל-README.md שלנו:

    אינטגרציה רציפה - 6
קישורים שימושיים: ייתכנו טעויות והשמטות בטקסט. תודה לך על תשומת הלב!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION