Ich versuche, ein Projekt in Jenkins freizugeben und erhalte die Ausnahme „Host nicht gefunden“.
Caused by: java.lang.RuntimeException: java.net.UnknownHostException: XXXXXXXXXXXXXXX: nodename nor servname provided, or not known
at org.apache.maven.scm.provider.perforce.PerforceScmProvider.generateDefaultClientspecName(PerforceScmProvider.java:420)
at org.apache.maven.scm.provider.perforce.PerforceScmProvider.getClientspecName(PerforceScmProvider.java:395)
at org.apache.maven.scm.provider.perforce.command.checkout.PerforceCheckOutCommand.executeCheckOutCommand(PerforceCheckOutCommand.java:75)
at org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.executeCommand(AbstractCheckOutCommand.java:82)
at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
Beim Durchlesen des Quelltexts sieht es so aus, als ob die Ausnahme in dieser Zeile ausgelöst wird:
InetAddress.getLocalHost().getHostName();
Da ich die Quelle für das Release-Plugin nicht kontrolliere, außer den Code zu ändern, gibt es eine Möglichkeit, dieses Problem zu umgehen? Kann ich meine etc-Hosts so einrichten, dass sie eine bestimmte Antwort von „InetAddress.getLocalHost().getHostName()“ erzwingen?
Antwort1
Ich gehe davon aus, dass Ihr XXXXXXXXXXXXXXX einen tatsächlichen, nicht zum Localhost gehörenden (oder eine Localhost-Variante/einen Localhost-Alias) Hostnamen maskiert.
Dies kann passieren, wenn Ihr Computer einen Hostnamen/eine IP-Adresse hat, für den/die gemäß den Einstellungen Ihres lokalen Namensauflösers keine Vorwärts- und Rückwärtssuche möglich ist. InetAddress.getLocalHost()
führt bekanntermaßen Rückwärtssuchen durch, um den lokalen Host aufzulösen.
Führen Sie den hostname
Befehl aus und stellen Sie sicher, dass Sie einen Eintrag haben, der Ihre echte IP-Adresse mit diesem Namen in abgleicht /etc/hosts
. Möglicherweise hostname
wird entweder der FQDN-Hostname oder der Alias/kurze Hostname zurückgegeben, und diese können nicht vorwärts/rückwärts gesucht werden.
Ein weiteres Problem kann die Differenz zwischen IPv6 und IPv4 sein.
Beachten Sie, dass die Jenkins JVM Hostnamen-Lookups zwischenspeichert. Es lohnt sich also, ein kleines Testprogramm für den Testaufruf zu haben InetAddress.getLocalHost()
. Andernfalls sollten Sie Jenkins nach jeder getesteten Konfigurationsänderung neu starten.
Bitte geben Sie Feedback/zusätzliche Details, damit ich diese Antwort verbessern kann.