Estoy intentando publicar un proyecto en jenkins y obtengo una excepción de host no encontrado.
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)
Al leer la fuente, parece que la excepción se produce en esta línea:
InetAddress.getLocalHost().getHostName();
Dado que no controlo la fuente del complemento de lanzamiento aparte de cambiar el código, ¿hay alguna forma de solucionar este problema? ¿Puedo configurar mis hosts etc de alguna manera para forzar una respuesta específica de "InetAddress.getLocalHost().getHostName()"?
Respuesta1
Supongo que su XXXXXXXXXXXXXXX está enmascarando un nombre de host real, no localhost (o variante/alias de localhost).
Esto puede suceder si su máquina tiene un nombre de host/dirección IP que no se puede buscar tanto hacia adelante como hacia atrás de acuerdo con la configuración de resolución de nombres local. InetAddress.getLocalHost()
Se sabe que realiza búsquedas inversas para resolver el host local.
Ejecute el hostname
comando y asegúrese de tener una entrada que coincida con su dirección IP real con ese nombre en /etc/hosts
. Es posible que hostname
esté devolviendo el nombre de host FQDN o el alias/nombre de host corto, y que estos no se puedan buscar hacia adelante o hacia atrás.
Otro problema puede ser IPv6 frente a IPv4.
Tenga en cuenta que Jenkins JVM almacenará en caché las búsquedas de nombres de host, por lo que vale la pena tener un pequeño programa de prueba para realizar la llamada de prueba InetAddress.getLocalHost()
; de lo contrario, debe reiniciar Jenkins después de cada cambio de configuración que pruebe.
Proporcione comentarios/detalles adicionales para que pueda mejorar esta respuesta.