Jenkins에서 프로젝트를 릴리스하려고 하는데 호스트를 찾을 수 없다는 예외가 발생합니다.
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()"에서 특정 응답을 강제하도록 어떤 방식으로든 내 etc 호스트를 설정할 수 있습니까?
답변1
귀하의 XXXXXXXXXXXXXXX가 실제 로컬 호스트가 아닌(또는 로컬 호스트 변형/별칭) 호스트 이름을 마스킹하고 있다고 가정합니다.
이는 로컬 이름 확인자 설정에 따라 정방향 및 역방향 조회가 모두 불가능한 호스트 이름/IP 주소가 컴퓨터에 있는 경우 발생할 수 있습니다. InetAddress.getLocalHost()
로컬 호스트를 확인하기 위해 역방향 조회를 수행하는 것으로 알려져 있습니다.
명령 을 실행 hostname
하고 실제 IP 주소가 해당 이름과 일치하는 항목이 있는지 확인하세요 /etc/hosts
. FQDN 호스트 이름 또는 별칭/짧은 호스트 이름을 반환하는 것일 수 hostname
있으며 정방향/역방향 조회가 불가능합니다.
또 다른 문제는 IPv6과 IPv4일 수 있습니다.
Jenkins JVM은 호스트 이름 조회를 캐시하므로 에 대한 테스트 호출을 수행하기 위한 작은 테스트 프로그램을 갖는 것이 좋습니다 InetAddress.getLocalHost()
. 그렇지 않으면 테스트하는 각 구성 변경 후에 Jenkins를 다시 시작해야 합니다.
이 답변을 개선할 수 있도록 피드백/추가 세부정보를 제공해 주세요.