Estou tentando lançar um projeto no Jenkins e obtendo uma exceção de host não 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)
Lendo a fonte, parece que a exceção foi lançada nesta linha:
InetAddress.getLocalHost().getHostName();
Como eu não controlo a fonte do plug-in de lançamento, além de alterar o código, há alguma maneira de solucionar esse problema? Posso configurar meus hosts etc de alguma forma para forçar uma resposta específica de "InetAddress.getLocalHost().getHostName()"?
Responder1
Presumo que seu XXXXXXXXXXXXXXX esteja mascarando um nome de host real, não localhost (ou variante/alias de localhost).
Isso pode acontecer se sua máquina tiver um nome de host/endereço IP que não possa ser pesquisado tanto para frente quanto para trás, de acordo com a configuração do seu resolvedor de nomes local. InetAddress.getLocalHost()
é conhecido por realizar pesquisas reversas para resolver o host local.
Execute o hostname
comando e certifique-se de ter uma entrada que corresponda ao seu endereço IP real com esse nome no formato /etc/hosts
. Pode ser que hostname
esteja retornando o nome do host FQDN ou o alias/nome abreviado do host e que eles não possam ser pesquisados direta/reversamente.
Outro problema pode ser IPv6 versus IPv4.
Observe que a JVM do Jenkins armazenará em cache as pesquisas de nome de host, portanto, vale a pena ter um pequeno programa de teste para fazer a chamada de teste InetAddress.getLocalHost()
, caso contrário, você deve reiniciar o Jenkins após cada alteração de configuração testada.
Forneça comentários/detalhes adicionais para que eu possa melhorar esta resposta.