מבוא לג'נקינס 2 וכוח הצינורות

1. סקירה כללית

במאמר זה אנו עומדים להציג את השימוש בצינורות באמצעות דוגמה למסירה רציפה באמצעות ג'נקינס.

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

  • הַהדָרָה
  • ניתוח סטטי פשוט (במקביל לאוסף)
  • מבחני יחידות
  • מבחני אינטגרציה (במקביל למבחני יחידות)
  • פְּרִיסָה

2. הקמת ג'נקינס

קודם כל, עלינו להוריד את הגרסה היציבה האחרונה של ג'נקינס (2.73.3 בנקודת כתיבת מאמר זה).

בואו ננווט לתיקיה בה נמצא הקובץ שלנו ונפעיל אותו באמצעות ה- java -jar jenkins.war פקודה. זכור כי איננו יכולים להשתמש ב- Jenkins ללא הגדרת משתמשים ראשונית.

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

עכשיו יש לנו התקנה חדשה של ג'נקינס מוכנה לשימוש.

ניתן למצוא כאן את כל הגרסאות הזמינות של ג'נקינס.

3. צינורות

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

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

הוא משתמש בשפה ספציפית לתחום (DSL) עם שני תחבירים שונים:

  • צינור הצהרתי
  • צינור תסריט

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

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

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

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

כדי להתחיל להשתמש בצינורות עלינו להתקין את התוסף Pipeline המאפשר להלחין אוטומציה פשוטה ומורכבת.

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

4. דוגמה מהירה

לדוגמא שלנו, נשתמש ביישום Spring Boot קטן. לאחר מכן ניצור צינור שמשכפל את הפרויקט, בונה אותו ומריץ מספר בדיקות ואז מריץ את היישום.

בואו להתקין את צ'קסטייל,סטָטִי אָנָלִיזָה אַסְפָן ו JUnit תוספים, אשר בהתאמה שימושיים לאיסוף צ'קסטייל תוצאות, בנה גרף ניתוח משולב של דוחות הבדיקה והמחיש בדיקות שבוצעו ונכשלו בהצלחה.

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

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

סוף - סוף, ה JUnit תוסף מספק מפרסם הצורך דוחות בדיקת XML שנוצרו במהלך ה- build והפלט מידע מפורט ומשמעותי ביחס למבחני הפרויקט.

אנו גם להגדיר צ'קסטייל ביישומים שלנו pom.xml:

 org.apache.maven.plugins maven-checkstyle-plugin 2.17 

5. יצירת סקריפט צינור

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

המסך הבא מאפשר לנו למלא פרטים נוספים על השלבים השונים של עבודתנו בג'נקינס, כגון תיאור, מפעילה, כמה אפשרויות פרויקט מתקדמות:

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

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

הנה סקריפט העבודה לסביבת יוניקס:

צומת {שלב 'שיבוט הפרויקט' git '//github.com/eugenp/tutorials.git' dir ('spring-jenkins-pipeline') {stage ("קומפילציה וניתוח") {מקביל 'קומפילציה': {sh " ./mvnw התקנה נקייה -DskipTests "}, 'ניתוח סטטי': {stage (" Checkstyle ") {sh" ./mvnw checkstyle: checkstyle "שלב ([$ class: 'CheckStylePublisher', canRunOnFailed: true, defaultEncoding: '' ' , בריא: '100', תבנית: '** / target / checkstyle-result.xml', unHealthy: '90', useStableBuildAsReference: true])}}} שלב ("בדיקות ופריסה") {במקביל 'מבחני יחידות' : {stage ("בדיקות יחידת ריצה") {try {sh "./mvnw test -Punit"} catch (err) {step ([$ class: 'JUnitResultArchiver', testResults: '** / target / surefire-reports / TEST- * UnitTest.xml ']) throw err} step ([$ class:' JUnitResultArchiver ', testResults:' ** / target / surefire-reports / TEST- * UnitTest.xml '])}},' מבחני שילוב ' : {stage ("הפעלת בדיקות אינטגרציה") {try {sh "./mvnw test -Pintegration"} לתפוס (err) {step ([$ class: 'JUnitResultArchiver', testResults: '** / tar get / surefire-reports / TEST- '+' * IntegrationTest.xml ']) throw err} step ([$ class:' JUnitResultArchiver ', testResults:' ** / target / surefire-reports / TEST- '+' * IntegrationTest .xml '])}} שלב ("Staging") {sh "pid = \ $ (lsof -i: 8989 -t); להרוג -TERM \ $ pid "+" || להרוג -KILL \ $ pid "withEnv (['JENKINS_NODE_COOKIE = dontkill']) {sh 'nohup ./mvnw spring-boot: run -Dserver.port = 8989 &'}}}}}

ראשית, אנו משבטים את המאגר מ- GitHub, ואז משנים את הספריה לפרויקט שלנו, שנקרא אביב-ג'נקינס-צינור.

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

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

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

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

שים לב שאם כל בדיקה נכשלה, ה- BUILD יסומן כ FAILED וגם הפריסה לא תתרחש.

כמו כן, אנו משתמשים JENKINS_NODE_COOKIE כדי למנוע השבתה מיידית של היישום שלנו כאשר הצינור מגיע לסופו.

כדי לראות סקריפט כללי יותר שעובד על מערכות שונות אחרות, עיין במאגר GitHub.

6. דוח ניתוח

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

הנה סקירה כללית של המבנים:

קצת יותר למטה נמצא את תצוגת הבמה של הצינור, עם התוצאה של כל שלב:

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

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

כאן אנו רואים 60 אזהרות בעדיפות גבוהה הניתנות לגלישה על ידי לחיצה על:

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

באותו אופן, ניתן להגיע לדוח המבחן המלא בלחיצה על תוצאת הבדיקה קישור. בואו נראה את התוצאות של com.baeldung חֲבִילָה:

כאן אנו יכולים לראות כל קובץ בדיקה עם משך הזמן ומצבו.

7. מסקנה

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

כמו תמיד, ניתן למצוא את קוד המקור של מאמר זה ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found