J'exécute Jenkins à partir de l'utilisateur qui jenkins
a $PATH
défini quelque chose et quand je vais dans l'interface Web de Jenkins, dans la fenêtre Propriétés système ( http://$host/systemInfo
), je vois un autre $PATH
.
J'ai installé Jenkins sur Centos avec le rpm natif du site Web de Jenkins. J'utilise le script de démarrage fourni avec l'installation en utilisantsudo /etc/init.d/jenkins start
Quelqu'un peut-il m'expliquer pourquoi cela se produit?
jenkins
environment-variables
hudson
Michael
la source
la source
echo $PATH
, est-ce que cela correspond à ce que vous voyez dans jenkins?Réponses:
Michael,
Deux choses:
Lorsque Jenkins se connecte à un ordinateur, il va au
sh
shell, et non aubash
shell (du moins c'est ce que j'ai remarqué - je me trompe peut-être). Ainsi, toutes les modifications que vous apportez à $ PATH dans votre fichier bashrc ne sont pas prises en compte.De plus, toutes les modifications que vous apportez à $ PATH dans votre shell local (dans lequel vous vous connectez personnellement) n'apparaîtront pas dans Jenkins.
Pour changer le chemin utilisé par Jenkins, vous avez deux options (AFAIK):
1) Modifiez votre
/etc/profile
fichier et ajoutez-y les chemins que vous souhaitez2) Accédez à la page de configuration de votre esclave et ajoutez la variable d'environnement
PATH
, avec la valeur:$PATH:/followed-by/paths/you/want/to/add
Si vous utilisez la deuxième option, vos informations système ne les afficheront toujours pas, mais vos builds verront les chemins ajoutés.
la source
J'ai continué à rencontrer ce problème, mais maintenant j'ajoute simplement:
Comme première étape de mon processus de construction. Maintenant, toutes mes règles suivantes sont chargées pour que Jenkins fonctionne correctement.
la source
source /etc/profile
tant que première commande dans cette zone de texte Build> Execute Shell> Command./usr/local/bin
spécifié dans/etc/paths
, et/etc/paths
est utilisé par/usr/libexec/path_helper
, et path_helper est exécuté dans/etc/profile
.Vous pouvez également éditer le
/etc/sysconfig/jenkins
fichier pour apporter des modifications aux variables d'environnement, etc. J'ai simplement ajoutésource /etc/profile
à la fin du fichier./etc/profile
a toutes lesPATH
configurations de variables appropriées . Lorsque vous faites cela, assurez-vous de redémarrer JenkinsNous exécutons ZendServer CE qui installe pear, phing, etc. dans un chemin différent, donc cela a été utile. De plus, nous n'obtenons pas les
LD_LIBRARY_PATH
erreurs que nous avions l'habitude d'obtenir avec le client Oracle et Jenkins.la source
J'ai essayé
/etc/profile
,~/.profile
et~/.bash_profile
et aucun de ceux travaillé. J'ai trouvé que l'édition~/.bashrc
pour le compte esclave jenkins l'a fait.la source
/etc/profile
ni~/.profile
Les informations sur cette réponse sont obsolètes. Vous devez aller dans Configurer Jenkins> Et vous pouvez ensuite cliquer pour ajouter une paire clé-valeur de variable d'environnement à partir de là.
par exemple:
export MYVAR=test
seraitMYVAR
est la clé ettest
est la valeur.la source
Sur ma nouvelle instance EC2, ajouter simplement la nouvelle valeur au PATH de l'utilisateur .profile de Jenkins, puis redémarrer tomcat a fonctionné pour moi.
Sur une instance plus ancienne où la configuration est différente, utiliser le n ° 2 de la réponse de Sagar était la seule chose qui fonctionnait (c'est-à-dire .profile, .bash * ne fonctionnait pas).
la source
J'ai trouvé deux plugins pour ça. L'un charge les valeurs d'un fichier et l'autre vous permet de configurer les valeurs dans l'écran de configuration du travail.
Plugin Envfile - Ce plugin vous permet de définir des variables d'environnement via un fichier. Le format du fichier doit être le format de fichier de propriétés Java standard.
Plugin EnvInject - Ce plugin permet d'ajouter des variables d'environnement et d'exécuter un script de configuration afin de configurer un environnement pour le Job.
la source
Ne pourriez-vous pas simplement l'ajouter en tant que variable d'environnement dans les paramètres Jenkins:
Gérer Jenkins -> Propriétés globales> Variables d'environnement: puis cliquez sur "Ajouter" pour ajouter une propriété PATH et sa valeur à ce dont vous avez besoin.
la source
Voici comment j'ai résolu ce problème ennuyeux:
J'ai changé la
PATH
variable comme @sagar l'a suggéré dans sa deuxième option, mais j'ai quand même unePATH
valeur différente de ce à quoi je m'attendais.Finalement, j'ai découvert que c'était le
EnvInject
plugin qui avait remplacé maPATH
variable!Je pourrais donc désinstaller
EnvInject
ou simplement l'utiliser pour injecter la variable PATH.Comme beaucoup de nos jobs Jenkins utilisent ce plugin, je ne voulais pas le désinstaller ...
J'ai donc créé un fichier:
environment_variables.properties
sous mon répertoire personnel Jenkins.Ce fichier contient la valeur de l' environnement de chemin que je avais besoin:
PATH=$PATH:/usr/local/git/bin/
.Depuis l'interface Web Jenkins:
Manage Jenkins -> Configure System
. Dans cet écran - je coché la casePrepare jobs environment
option, dans leProperties File Path
champ je suis entré dans le chemin de mon dossier:/var/lib/jenkins/environment_variables.properties
.De cette façon, chaque travail Jenkins que nous avons reçoit toutes les variables que j'ai placées dans ce
environment_variables.properties
fichier.la source
Jenkins prend également en charge le format
PATH+<name>
à ajouter à n'importe quelle variable, pas seulement PATH:Variables d'environnement global ou variables d'environnement de noeud:
Ceci est également pris en charge dans l'étape du pipeline
withEnv
:Prenez juste note, il précède la variable. S'il doit être ajouté, vous devez faire ce que montrent les autres réponses.
Consultez le document des étapes du pipeline ici .
Ou les documents java sur EnvVars ici .
la source
Je n'ai eu de progrès sur ce problème qu'après un "/etc/init.d/jenkins force-reload". Je recommande d'essayer cela avant toute autre chose, et de l'utiliser plutôt que de redémarrer.
la source
Sur mon Ubuntu 13.04, j'ai essayé pas mal d'ajustements avant de réussir avec ceci:
la source
Ajouter
à
Jenkins utilise le sh pour que même / etc / profile ne fonctionne pas pour moi Quand j'ajoute ceci, j'ai tout l'env.
la source
Solution qui a fonctionné pour moi
source ~/.bashrc
Explication
J'ai d'abord vérifié que Jenkins exécutait BASH, avec
echo $SHELL
etecho $BASH
(notez que je mets explicitement#!/bin/bash
au sommet de la zone de texte dans Jenkins, je ne suis pas sûr que ce soit une condition pour obtenir BASH).source
ing/etc/profile
que d' autres proposées ne fonctionnait pas.En regardant
/etc/profile
j'ai trouvéet l'inspection de "$ PS1" l'a trouvé nul. J'ai essayé usurpation d' identité
$PS1
en vain comme sicependant cela n'a pas produit le résultat souhaité (ajoutez le reste de ce
$PATH
que j'attends de voir). Mais si je dis à bash d'être interactifle a
$PATH
été modifié comme je m'y attendais.J'essayais de comprendre comment usurper correctement un shell interactif
/etc/bash.bashrc
pour le charger, mais il s'est avéré que tout ce dont j'avais besoin était en panne~/.bashrc
, donc cela a simplementsource
résolu le problème.la source
#!/bin/bash -el
pour dire à bash de démarrer en tant que shell de connexion. Cela devrait amener bash à trouver les fichiers .rc nécessairesJ'ai essayé toutes les choses d'en haut - cela n'a pas fonctionné pour moi.
J'ai trouvé deux solutions (à la fois pour SSH-Slave)
Accédez aux paramètres de l'esclave
Ajouter une nouvelle variable d'environnement
La partie "$ {HOME}" est importante. Cela rend le PATH supplémentaire absolu. Le chemin relatif n'a pas fonctionné pour moi.
Option II (pipeline-script)
la source
Sur Ubuntu, je viens de modifier / etc / default / jenkins et d'ajouter la source / etc / profile à la fin et cela fonctionne pour moi.
la source
L'exécution de la commande avec un jeu de variables d'environnement est également efficace. Bien sûr, vous devez le faire pour chaque commande que vous exécutez, mais vous avez probablement un script de travail, vous n'avez donc probablement qu'une seule commande par construction. Mon script de travail est un script python qui utilise l'environnement pour décider quel python utiliser, donc j'avais encore besoin de mettre /usr/local/bin/python2.7 dans son chemin:
la source
Ce qui a fonctionné pour moi a été de remplacer l'environnement PATH pour l'esclave.
Ensuite, déconnectez et reconnectez l'esclave.
Malgré ce que les informations système montraient, cela fonctionnait.
la source
J'ai Jenkins 1.639 installé sur SLES 11 SP3 via zypper (le gestionnaire de paquets). Installation configurée de jenkins en tant que service
Bien que
/etc/init.d/jenkins
sources/etc/sysconfig/jenkins
, toutes les variables d'environnement définies là-bas ne sont pas héritées par le processus jenkins car il est démarré dans un shell de connexion séparé avec un nouvel environnement comme celui-ci:La façon dont j'ai réussi à définir des variables d'environnement pour le processus jenkins est via
.bashrc
dans son répertoire personnel -/var/lib/jenkins
. J'ai dû créer/var/lib/jenkins/.bashrc
car cela n'existait pas auparavant.la source
Voici ce que j'ai fait sur ubuntu 18.04 LTS avec Jenkins 2.176.2
J'ai créé le fichier .bash_aliases et y ai ajouté un chemin, des variables proxy, etc.
Au début de .bashrc, c'était défini.
Donc, il vérifie que si nous démarrons un shell non interactif, nous ne faisons rien ici.
en bas du .bashrc il y avait des inclus pour .bash_aliases
j'ai donc déplacé .bash_aliases en chargeant d'abord à .bashrc juste au-dessus de la vérification non interactive.
Cela n'a pas fonctionné en premier, mais j'ai ensuite déconnecté l'esclave et l'ai reconnecté pour qu'il charge à nouveau les variables. Vous n'avez pas besoin de redémarrer tout jenkins si vous modifiez des variables esclaves. déconnectez et reconnectez.
la source
1- ajouter à votre fichier profil fichier ".bash_profile"
il se trouve dans le dossier "/ home / votre_utilisateur /"
vi .bash_profile
ajouter:
==> c'est l'espace de travail e jenkins
2- Si vous utilisez jetty: allez dans le fichier jenkins.xml
et ajouter :
la source