קונטיינרים של Jenkins: העברת הגדרות פרוקסי של Maven בקובץ סודי
חברו קובץ סודי של Jenkins והעבירו את הנתיב הנראה שלו בקונטיינר אל mvn -s עבור תצורת הפרוקסי של הבנייה.
הפרוקסי של מאגר Maven שייך לקובץ ה-settings.xml שלו. כאשר בנייה של Jenkins כבר רצה בתוך קונטיינר Maven, ספקו את הקובץ הזה לתהליך Maven שרץ שם.
שמרו את ה-settings.xml המלא המיועד כפרטי Jenkins Secret file בשם maven-proxy-settings. בתוך השלבים של שלב הקונטיינר הקיים:
withCredentials([
file(credentialsId: 'maven-proxy-settings', variable: 'MAVEN_SETTINGS')
]) {
sh 'mvn -s "$MAVEN_SETTINGS" -B verify'
}
השיוך מספק נתיב קובץ זמני. מחרוזת Groovy בגרשיים בודדים משאירה את הרחבת המשתנים ל-shell, והגרשיים הכפולים של ה-shell שומרים על הנתיב כארגומנט אחד. האפשרות -s של Maven בוחרת בקובץ הזה כהגדרות המשתמש; -B בוחרת במצב אצווה.
קובץ האישורים יכול להכיל את מארח הפרוקסי, הפורט, האימות וה-nonProxyHosts של הבנייה בקטע proxies, יחד עם כל הגדרות משתמש אחרות שנדרשות. רשימת עקיפת פרוקסי ב-Maven משתמשת בקווים אנכיים בין תבניות מארח.
הקובץ חייב להתקיים במקום שבו Maven רץ
עם Docker Pipeline, הסוכן והקונטיינר זקוקים למערכת קבצים מותקנת תואמת כדי שהנתיב המשויך יהיה קריא בתוך קונטיינר ההרצה. docker run שמופעל ידנית זקוק להתקנת קובץ מפורשת, עדיף לקריאה בלבד, ו-Maven חייב לקבל את הנתיב מצד הקונטיינר. העברת נתיב מהמארח רק כמשתנה סביבה אינה הופכת את הקובץ לזמין.
השאירו כל שינוי של ספריית העבודה בתוך בלוק שיוך האישורים כדי שהקובץ הסודי לא יוצב תחת תת-ספרייה ניתנת לעיון בסביבת העבודה. אל תדפיסו את הקובץ ליומן הבנייה ואל תעתיקו אותו לתמונה מתמשכת.
זה בוחר הגדרות משתמש. גם ההגדרות הגלובליות של Maven יכולות להשתתף, לכן בדקו את שתיהן אם מראה בירושה או תצורה אחרת ממשיכה להשפיע על הפתרון.