web-dev-qa-db-fra.com

Comment exécuter un script en tant que root dans Jenkins?

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
42
Mahesh

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
78
Igor Chubin

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

13
Lav Patel

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.

6
Nathan Crause