Jenkins-containrar: skicka Maven-proxyinställningar med en hemlig fil
Bind en hemlig Jenkins-fil och skicka dess synliga container-sökväg till mvn -s för byggets proxykonfiguration.
Mavens förrådsproxy hör hemma i dess settings.xml. När ett Jenkins-bygge redan körs i en Maven-container, ge den filen till Maven-processen som körs där.
Spara den kompletta avsedda settings.xml som en Jenkins Secret file-uppgift med namnet maven-proxy-settings. Inom stegen i det befintliga containersteget:
withCredentials([
file(credentialsId: 'maven-proxy-settings', variable: 'MAVEN_SETTINGS')
]) {
sh 'mvn -s "$MAVEN_SETTINGS" -B verify'
}
Bindningen ger en tillfällig filsökväg. Groovy-strängen med enkla citattecken lämnar variabelexpansionen till skalet, och skalets dubbla citattecken bevarar sökvägen som ett argument. Mavens -s-alternativ väljer den filen som användarinställningar; -B väljer batchläge.
Uppgiftsfilen kan innehålla byggets proxyvärd, port, autentisering och nonProxyHosts i sitt proxies-avsnitt, tillsammans med andra nödvändiga användarinställningar. En proxy-bypasslista i Maven använder vertikala streck mellan värdmönster.
Filen måste finnas där Maven körs
Med Docker Pipeline behöver agenten och containern ett kompatibelt monterat filsystem så att den bundna sökvägen är läsbar inuti körcontainern. En docker run som startas manuellt behöver en explicit filmontering, helst skrivskyddad, och Maven måste ta emot sökvägen på containersidan. Att skicka en värdsökväg enbart som miljövariabel gör inte filen tillgänglig.
Håll varje ändring av arbetskatalogen inom uppgiftsbindningsblocket så att den hemliga filen inte hamnar under en genombläddringsbar underkatalog-arbetsyta. Skriv inte ut filen i byggloggen och kopiera den inte till en beständig image.
Detta väljer användarinställningar. Mavens globala inställningar kan fortfarande delta, så granska båda om en ärvd spegel eller annan konfiguration fortsätter att påverka upplösningen.