Я пытаюсь выпустить проект в jenkins и получаю исключение host not found.
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)
Читая исходный код, похоже, что исключение выбрасывается в этой строке:
InetAddress.getLocalHost().getHostName();
Поскольку я не контролирую источник для плагина выпуска, кроме изменения кода, есть ли способ обойти эту проблему? Могу ли я каким-то образом настроить свои хосты и т. Д., Чтобы вызвать конкретный ответ от "InetAddress.getLocalHost (). GetHostName ()"?
Я предполагаю, что ваш XXXXXXXXXXXXXXX маскирует фактическое имя хоста, отличное от localhost (или вариант / псевдоним localhost).
Это может произойти, если ваша машина имеет имя хоста / IP-адрес, который не может использоваться как для прямого, так и для обратного просмотра в соответствии с настройками локального преобразователя имен. InetAddress.getLocalHost()
как известно, выполняет обратный поиск для определения локального хоста.
Запустить hostname
и убедитесь, что у вас есть запись, соответствующая вашему реальному IP-адресу этому имени в /etc/hosts
. Может быть что hostname
возвращает либо полное доменное имя хоста, либо псевдоним / короткое имя хоста, и они не могут быть просмотрены вперед / назад.
Другой проблемой может быть IPv6 по сравнению с IPv4.
Обратите внимание, что JVM Jenkins будет кэшировать поиск имени хоста, поэтому стоит иметь небольшую тестовую программу для выполнения тестового вызова InetAddress.getLocalHost()
, в противном случае вам следует перезапускать Jenkins после каждого тестируемого изменения конфигурации.
Пожалуйста, предоставьте отзыв / дополнительную информацию, чтобы я мог улучшить этот ответ.