שחרור Maven לנקסוס

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

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

2. מאגר ב פום

כדי שמאבן יוכל לשחרר לשרת Nexus Repository, אנחנו צריכים להגדיר את המאגר מידע דרך distributionManagement אֵלֵמֶנט:

  nexus-releases // localhost: 8081 / nexus / content / מאגרים / releases 

מאגר Releases המאוחסן יוצא מהקופסה ב- Nexus, כך שאין צורך ליצור אותו במפורש.

3. SCM במייבאן פום

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

 scm: git: //github.com/user/project.git //github.com/user/project scm: git: //github.com/user/project.git 

לחלופין, באמצעות פרוטוקול git:

 scm: git: [דוא"ל מוגן]: משתמש / project.git scm: git: [דוא"ל מוגן]: user / project.git scm: git: [דוא"ל מוגן]: user / project.git 

4. תוסף השחרור

התוסף הסטנדרטי של Maven המשמש תהליך שחרור הוא תוסף maven-release - התצורה של תוסף זה מינימלית:

 org.apache.maven.plugins maven-release-plugin 2.4.2 [מוגן בדוא"ל] {project.version} מהדורות אמיתיות 

מה שחשוב כאן הוא שה- releaseProfiles תצורה למעשה תכריח פרופיל Maven - משחרר פרופיל - להיות פעיל במהלך תהליך השחרור.

בתהליך זה ה- nexus-staging-maven-plugin משמש לביצוע פריסה ל- מהדורות נקסוס מאגר Nexus:

  משחרר org.sonatype.plugins nexus-staging-maven-plugin 1.5.1 ברירת מחדל לפרוס לפרוס לפרוס nexus-releases // localhost: 8081 / nexus / true 

התוסף מוגדר לבצע את תהליך השחרור ללא מנגנון הבימוי, כמו בעבר, בתהליך הפריסה (skipStaging = נכון).

וגם בדומה לתהליך הפריסה, שחרור לנקסוס הוא פעולה מאובטחת - אז נשתמש ב- Out of the Box פְּרִיסָה טופס משתמש Nexus שוב.

עלינו גם להגדיר את אישורי ה- מהדורות נקסוס שרת בעולם settings.xml (% USER_HOME% /. M2 / settings.xml):

  nexus משחרר את הפריסה the_pass_for_the_ployment_user 

זו התצורה המלאה

5. תהליך השחרור

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

5.1. שחרור: נקי

ניקוי שחרור רָצוֹן:

  • מחק את מתאר השחרור (release.properties)
  • מחק כל קבצי POM גיבויים

5.2. שחרור: להתכונן

החלק הבא של תהליך השחרור הוא הכנת השחרור; זה יהיה:

  • לבצע כמה בדיקות - לא יהיו שינויים בלתי מחויבים והפרויקט לא צריך להיות תלוי בתלות של SNAPSHOT
  • שנה את גרסת הפרויקט בקובץ pom למספר שחרור מלא (הסר את הסיומת SNAPSHOT) - בדוגמה שלנו - 0.1
  • להפעיל את הפרויקט מִבְחָן סוויטות
  • להתחייב ולדחוף את השינויים
  • ליצור את תָג מתוך קוד גרסה שאינו SNAPSHOT
  • להגדיל את הגרסה של הפרויקט בפום - בדוגמה שלנו - 0.2-SNAPSHOT
  • להתחייב ולדחוף את השינויים

5.3. שחרור: ביצוע

החלק האחרון של תהליך השחרור הוא ביצוע המהדורה; זה יהיה:

  • תג שחרור לקופה מ- SCM
  • לבנות ולפרוס קוד משוחרר

שלב שני זה של התהליך מסתמך על תפוקת שלב הכן - ה release.properties.

6. על ג'נקינס

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

התוספים הקיימים של ג'נקינס המתמקדים בתהליך השחרור הם:

  • שחרר את התוסף
  • תוסף שחרור M2

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

לכן, עבור עבודה חדשה של ג'נקינס (בנה פרויקט maven2 / 3) - נגדיר 2 פרמטרים למחרוזות: releaseVersion = 0.1 ו developmentVersion = 0.2-SNAPSHOT.

ב לִבנוֹת בסעיף התצורה, אנו יכולים פשוט להגדיר את הפקודה הבאה של Maven להפעלה:

שחרור: שחרור נקי: הכן שחרור: בצע -DreleaseVersion = $ {releaseVersion} -DevelopmentVersion = $ {developmentVersion}

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

כמו כן, כדאי להשתמש בתוסף ניקוי סביבת העבודה ולבדוק את מחק את שטח העבודה לפני תחילת הבנייה אפשרות לבנייה זו. עם זאת יש לזכור כי לְבַצֵעַ שלב ההפעלה צריך להיות מנוהל בהכרח על ידי אותה פקודה כמו הכןשלב - זה בגלל האחרון לְבַצֵעַ שלב ישתמש ב release.properties קובץ שנוצר על ידי הכן. המשמעות היא שלא נוכל להפעיל ג'נקינס הכןועוד רץ לְבַצֵעַ.

7. מסקנה

מאמר זה הראה כיצד ליישם את התהליך של הוצאת פרויקט Maven עם או בלי ג'נקינס. בדומה לפריסה, תהליך זה משתמש ב- nexus-staging-maven-plugin לקיים אינטראקציה עם נקסוס ומתמקד בפרויקט git.