Pourquoi ne InetAddress.getLocalHost().getHostName() renvoie une valeur différente de bash “nom d'hôte”?
J'ai un build.gradle tâche qui fonctionne comme un champion sur ma boîte de dev à la production d'un fichier de propriétés qui enregistre le nom de la machine que la construction a été généré. La logique est assez simple...
def hostname = InetAddress.getLocalHost().getHostName();
Sur ma boîte de dev cela génère toujours la même valeur que si j'ai fait le nom d'hôte à partir de l'interpréteur de commande bash.
bobk-mbp:DM_Server bobk$ hostname
bobk-mbp.local
Sur notre jenkins serveur CI, cependant, bash nom d'hôte renvoie une chose, mais de mon appel à InetAddress.getLocalHost().getHostName(); renvoie autre chose. Ce qu'il faut changer sur le jenkins machine pour obtenir ces deux retourner la même valeur?
OriginalL'auteur Bob Kuhar | 2012-06-21
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes sur linux, la commande hostname exécuté à partir de l'o/s retourne le noyau du nom d'hôte configuré.
InetAddress.getHostName() est en train de faire une recherche dns inverse sur l'adresse IP du serveur en utilisant le service de nommage (DNS) configuré dans votre O/S.
Si vous avez besoin du nom d'hôte, telle que comprise par l'o/s, l'obtenir à partir d'une variable d'environnement Système via.la fonction getenv peut être l'option la plus simple. Il n'est pas totalement bon moyen de faire cela, mais il peut être suffisamment sans avoir besoin de se plonger dans le réseau ou de l'administrateur système.
J'ai eu à utiliser
"hostname".execute().text.trim()
supprimer la fin caractère de saut de ligne.OriginalL'auteur Brian Smith
À partir de la documentation de l'API pour InetAddress.getHostName();
De sorte que vous devrez peut-être configurer les DNS sur le serveur Jenkins. La façon la plus simple de le faire est d'éditer le fichier /etc/hosts (je suis en supposant que votre Jenkins fonctionne sur Linux) et assurez-vous qu'il ressemble à ceci:
C'est en fait l'arrière de votre commande de /etc/hosts, le nom canonique (domaine) de l'élément devrait être devant le nom d'hôte. man7.org/linux/man-pages/man5/hosts.5.html
OriginalL'auteur gareth_bowles