Jenkins-Container: Maven-Proxy-Einstellungen mit einer geheimen Datei übergeben
Binden Sie eine geheime Jenkins-Datei ein und übergeben Sie ihren sichtbaren Containerpfad an mvn -s für die Proxy-Konfiguration des Builds.
Der Repository-Proxy von Maven gehört in seine settings.xml. Wenn ein Jenkins-Build bereits in einem Maven-Container läuft, stellen Sie diese Datei dem dort laufenden Maven-Prozess bereit.
Speichern Sie die vollständige vorgesehene settings.xml als Jenkins-Anmeldeinformation vom Typ Secret file namens maven-proxy-settings. Innerhalb der Schritte der vorhandenen Container-Stage:
withCredentials([
file(credentialsId: 'maven-proxy-settings', variable: 'MAVEN_SETTINGS')
]) {
sh 'mvn -s "$MAVEN_SETTINGS" -B verify'
}
Die Bindung liefert einen temporären Dateipfad. Die Groovy-Zeichenkette in einfachen Anführungszeichen überlässt die Variablenexpansion der Shell, und die doppelten Anführungszeichen der Shell bewahren den Pfad als ein Argument. Mavens Option -s wählt diese Datei als Benutzereinstellungen; -B wählt den Batch-Modus.
Die Anmeldeinformationsdatei kann Proxy-Host, Port, Authentifizierung und nonProxyHosts des Builds in ihrem Abschnitt proxies enthalten, zusammen mit allen weiteren erforderlichen Benutzereinstellungen. Eine Proxy-Ausschlussliste in Maven verwendet senkrechte Striche zwischen Hostmustern.
Die Datei muss dort existieren, wo Maven läuft
Mit Docker Pipeline benötigen Agent und Container ein kompatibles eingebundenes Dateisystem, damit der gebundene Pfad im Ausführungscontainer lesbar ist. Ein manuell gestartetes docker run braucht eine ausdrückliche Dateieinbindung, vorzugsweise schreibgeschützt, und Maven muss den Pfad auf der Containerseite erhalten. Einen Hostpfad nur als Umgebungsvariable zu übergeben, macht die Datei nicht verfügbar.
Halten Sie jede Änderung des Arbeitsverzeichnisses innerhalb des Blocks zur Bindung der Anmeldeinformationen, damit die geheime Datei nicht in einem durchsuchbaren Unterverzeichnis des Arbeitsbereichs landet. Drucken Sie die Datei nicht in das Build-Log und kopieren Sie sie nicht in ein dauerhaftes Image.
Dies wählt Benutzereinstellungen. Globale Einstellungen von Maven können weiterhin mitwirken; prüfen Sie daher beide, wenn ein geerbter Mirror oder eine andere Konfiguration die Auflösung weiterhin beeinflusst.