J'ai besoin d'exécuter un script Shell dans Jenkins en tant que root au lieu de l'utilisateur par défaut. Que dois-je changer?
Mon fichier sudoers est comme ceci:
# User privilege specification
root ALL=(ALL) ALL
igx ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
# Allow members of group Sudo to execute any command
# (Note that later entries override this, so you might need to move
%Sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
root ALL=(ALL) ALL
jenkins ALL=NOPASSWD: /var/lib/jenkins/workspace/ing00112/trunk/source/
jenkins ALL=(ALL) NOPASSWD:ALL
#Defaults:jenkins !requiretty
Vous devez exécuter le script en utilisant Sudo
:
Sudo /path/to/script
Mais avant, vous devez autoriser jenkins
à exécuter le script dans /etc/sudoers
.
jenkins ALL = NOPASSWD: /path/to/script
La réponse de @Igor Chubin est 100% correcte, mais n'ouvrez jamais le fichier sudoer avec un éditeur normal. utilisez toujours visudo
il suffit de taper
Sudo visudo
cela vous amènera à /etc/sudoers
et lors de l'enregistrement, il s'assurera qu'il n'y a pas d'erreur de formatage.
si vous faites une erreur dans le fichier sudoer, vous perdrez l'accès Sudo, utilisez donc toujours visudo
Je me rends compte que je suis en retard à la fête sur cette question, mais pour référence, je pensais que je jetterais mon 2c ici: j'utilise le plugin SSH pour Jenkins pour accomplir cela (configurez simplement une cible localhost). De cette façon, je peux contenir le script directement dans Jenkins (comme une étape "Execute Shell" normale), au lieu d'utiliser Sudo pour invoquer un script externe.