תזמון עבודה בג'נקינס

1. הקדמה

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

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

2. הגדרה ראשונית

אנו מניחים את זה JDK ו- Maven הותקנו ב תצורת כלים גלובלית עם שמות כמו JDK9.0.1 ו- Maven3.5.2בהתאמה בשרת Jenkins.

זה גם מניח את זה יש לנו גישה למאגר SCM כגון Bitbucket עם פרויקט Maven שהוגדר כהלכה.

3. תזמון משרה פשוטה

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

עלינו לספק ערך בפורמט תואם Cron. יש מידע נרחב בדף אם נלחץ על סימן השאלה לצד התיבה.

בואו להקליד */2 * * * * כאן, המייצג מרווח של שתי דקות:

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

בואו נשמור את העבודה - תוך כשתי דקות עלינו לראות את מצב הביצוע הראשון של העבודה:

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

4. יצירת משרה הסוקרת SCM

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

בואו ניצור משרה חדשה כפי שהוסבר בסעיף הקודם, עם כמה שינויים.

בתוך ה בנה טריגרים סָעִיף, במקום לבחור בנה מעת לעתבואו נבחר סקר SCM. ברגע שנעשה זאת, עלינו לראות תיבת טקסט עם תווית לוח זמנים.

בואו נקליד */5 * * * * בתיבה זו, מה שאומר שאנחנו רוצים לתזמן את ביצוע העבודה כל חמש דקות:

בואו נגלול עד ניהול קוד מקור סָעִיף. עם בחירת כפתור הבחירה שליד גיט, מופיע קטע חדש שכותרתו מאגרים.

זה המקום שבו עלינו להגדיר את פרטי מאגר ה- SCM שלנו. בואו להקליד את כתובת ה- URL של מאגר SCM ב- כתובת אתר של מאגר שדה טקסט:

עלינו לספק אישורי משתמש כדי שג'נקינס יוכל לגשת למאגר.

בואו נלחץ על לְהוֹסִיף כפתור לצד אישורים, שיציג מסך מוקפץ ליצירת אישורי המשתמש.

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

בלחיצה על לְהוֹסִיף כפתור, אנו חוזרים אל ניהול קוד מקור סָעִיף.

בואו לבחור את אישורי המשתמש הזה בתפריט הנפתח שליד אישורים:

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

בואו נגלול מטה אל לִבנוֹת קטע, לחץ הוסף שלב בנייה ובחר לבצע פגז. מכיוון שאנו עובדים על פרויקט Maven במאגר SCM, אנחנו צריכים להקליד mvn נקי להתקין, אשר יבצע בניית Maven.

בואו ננסה להבין מה עשינו כאן.

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

הוא ישתמש באישורי משתמש שסופקו כדי להתחבר ל- Bitbucket.

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

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

ה תפוקת קונסולה צריך להציג את הפלט של ה- Maven build. אנו יכולים לראות בפלט המסוף שקוד המקור נשלף מ- Bitbucket והפקודה mvn נקי להתקין הוצא להורג:

מכיוון שזה מבנה של Maven, תפוקת המסוף עשויה להיות ארוכה מאוד בהתאם למספר התלות של Maven שהורדו.

אבל בסוף הפלט, אנחנו צריכים לראות בנה הצלחה הוֹדָעָה.

5. יצירת עבודה המשתמשת בצינור כתסריט

עד כה ראינו כיצד ליצור משרות שמבוצעות במועד שנקבע מראש.

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

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

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

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

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

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

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

בואו לבחור באפשרות השנייה:

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

בואו נבחר קופה: SCM כללי בתוך ה שלב לדוגמא להפיל. לאחר מסירת כתובת האתר של SCM Repo ואישורי המשתמש, עלינו ללחוץ על צור סקריפט צינור לַחְצָן.

זה יוצר את התסריט בתיבת הטקסט:

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

באותו עמוד, בואו לגלול למעלה ולבחור withMaven: ספק סביבת Maven בתוך ה שלב לדוגמא להפיל. יש לציין כאן, כי אפשרות זו תהיה זמינה רק אם מותקן תוסף שילוב Pipeline Maven.

עלינו לבחור את שמות ההתקנות של Maven ו- JDK לצד הנפילות המתאימות. עלינו ללחוץ על צור סקריפט צינור לַחְצָן.

זה יוצר את התסריט בתיבת הטקסט:

בוא נשמור את התסריט.

יש עדיין כמה סקריפטים נוספים שאנחנו צריכים ליצור. בואו נבחר צומת: הקצה צומת בתוך ה שלב לדוגמא להפיל, סוּג לִשְׁלוֹט בתוך ה תווית שדה טקסט ולחץ צור סקריפט צינור:

בוא נשמור את התסריט.

ואחרון.

בואו נבחר שלב: במה בתוך ה שלב לדוגמא נפתח, הקלד scm בתוך ה שם במה שדה טקסט ולחץ צור סקריפט צינור:

בואו נשמור את זה.

הגיע הזמן לאסוף את כל התסריטים שנוצרו עד כה ולתפור אותם:

node ('master') {stage ('scm') {checkout ([$ class: 'GitSCM', branches: [[name: '* / master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [ ], userRemoteConfigs: [[credentialsId: 'e50f564f-fbb7-4660-9c95-52dc93fa26f7', url: '// [email protected] /projects/springpocrepo.git']]]}} stage ('build') {withMaven ( jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn clean install'}}}

ההצהרה הראשונה, צומת ('מאסטר') בתסריט לעיל, מציין שהעבודה תבוצע בצומת בשם לִשְׁלוֹט, שהוא צומת ברירת המחדל בשרת Jenkins.

בואו להעתיק את התסריט הנ"ל לתיבת הטקסט ב צנרת סָעִיף:

בוא נשמור תצורה זו.

עכשיו, יש רק דבר אחד שנשאר בחוץ. עלינו להגדיר Webhook ב- Bitbucket. ה- Webhook אחראי על שליחת הודעת דחיפה לשרת Jenkins בכל פעם שאירוע מסוים מתרחש ב- Bitbucket.

בואו נסתכל כיצד להגדיר אותו.

בואו נכנס ל- Bitbucket ונבחר מאגר. אנחנו צריכים לראות אפשרות הגדרות בעמודה השמאלית. בואו נלחץ עליו ונראה אפשרות Webhooks ב זרימת עבודה סָעִיף. בואו ניצור Webhook חדש.

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

יש לציין שכתובת ה- URL חייבת להסתיים עם קו נטוי נגרר:

בעת קביעת התצורה של Webhook לעיל, בחרנו באפשרות דחיפה במאגר. משמעות הדבר היא ש- Bitbucket ישלח התראה לשרת Jenkins בכל פעם שתתרחש דחיפה.

ניתן לשנות התנהגות זו; ישנן מספר אפשרויות שונות לבחירה.

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

אנחנו יכולים גם להגדיר את ה- webhook ב- Github; להלן מידע מועיל כיצד להגדיר זאת.

סיפור קצר: יצרנו תסריט צינור בשפה גרובית - שאמור לשלוף את קוד המקור מענף המאסטר של מאגר ה- SCM שסופק (באמצעות אישורי המשתמש שסופקו), בכל פעם שיש דחיפה במאגר ואז לבצע mvn נקי להתקין פקודה בשרת Jenkins.

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

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

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

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

ההצהרה הראשונה בפלט הקונסולה אומרת "התחיל על ידי Bitbucket לדחוף על ידי .." - המשמעות היא שהבנייה הופעלה אוטומטית כאשר Push התקיים ב- Bitbucket:

אם הכל ילך כשורה, הבנייה אמורה להסתיים בהצלחה.

6. צור משרה המשתמשת ב- Jenkinsfile

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

לשם כך, עלינו ליצור קובץ חדש ב- Bitbucket ולתת לו שם ג'נקינספיל. יש להעביר את סקריפט הצינור ל- Jenkinsfile זה בשינוי קל. בואו נראה בדיוק איך לעשות זאת.

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

בדף תצורת הצינור נבחר סקריפט צינור מ- SCM ליד הַגדָרָה בתוך ה צנרת סָעִיף. נראה נפתח עם אפשרויות שונות לצד SCM. בואו נבחר גיט מהתפריט הנפתח.

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

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

עם זאת, עלינו ליצור את Jenkinsfile במאגר; אז בואו ניצור קובץ טקסט חדש, נקרא בשם Jenkinsfile ונשתמש בתסריט הגרובי הפשוט הזה:

node ('master') {stage ('scm') {checkout scm} stage ('build') {withMaven (jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn clean install'} }}

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

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

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

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

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

7. מסקנה

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

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


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