De repositoryproxy van Maven hoort in zijn settings.xml. Wanneer een Jenkins-build al in een Maven-container draait, geef dat bestand dan aan het Maven-proces dat daar draait.

Sla de volledige bedoelde settings.xml op als Jenkins Secret file-referentie met de naam maven-proxy-settings. Binnen de stappen van de bestaande containerfase:

withCredentials([
    file(credentialsId: 'maven-proxy-settings', variable: 'MAVEN_SETTINGS')
]) {
    sh 'mvn -s "$MAVEN_SETTINGS" -B verify'
}

De binding levert een tijdelijk bestandspad. De Groovy-string met enkele aanhalingstekens laat variabele-expansie aan de shell over, en de dubbele aanhalingstekens van de shell behouden het pad als één argument. De optie -s van Maven kiest dat bestand als gebruikersinstellingen; -B kiest batchmodus.

Het referentiebestand kan de proxyhost, poort, authenticatie en nonProxyHosts van de build in de sectie proxies bevatten, samen met andere vereiste gebruikersinstellingen. Een proxy-omzeilingslijst in Maven gebruikt verticale strepen tussen hostpatronen.

Het bestand moet bestaan waar Maven draait

Met Docker Pipeline hebben de agent en de container een compatibel aangekoppeld bestandssysteem nodig zodat het gebonden pad leesbaar is in de uitvoercontainer. Een handmatig gestarte docker run vereist een expliciete bestandsmount, bij voorkeur alleen-lezen, en Maven moet het pad aan de containerkant ontvangen. Een hostpad alleen als omgevingsvariabele doorgeven maakt het bestand niet beschikbaar.

Houd elke wijziging van de werkmap binnen het referentiebindingsblok, zodat het geheime bestand niet in een doorzoekbare submapwerkruimte terechtkomt. Druk het bestand niet af in de buildlog en kopieer het niet naar een permanent image.

Dit kiest gebruikersinstellingen. De globale instellingen van Maven kunnen ook meedoen, dus controleer beide als een geërfde spiegel of andere configuratie de resolutie nog steeds beïnvloedt.

Gerelateerde artikelen