Comment exécuter un script comme 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. De quoi ai-je besoin de 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
40
demandé sur Rob Bajorek 2012-08-09 13:08:55

3 réponses

vous devez exécuter le script en utilisant sudo:

sudo /path/to/script

mais avant que vous devez autoriser jenkins pour tun le script dans /etc/sudoers.

jenkins    ALL = NOPASSWD: /path/to/script
71
répondu Igor Chubin 2012-08-09 09:10:44

la réponse de@Igor Chubin est correcte à 100%, mais n'ouvre jamais le fichier sudoer avec un éditeur normal. utilisez toujours visudo

tapez juste

sudo visudo

cela va vous prendre à /etc/sudoers et lors de la sauvegarde il s'assurera qu'il n'y a pas d'erreur dans le formatage.

si vous faites une erreur dans le fichier sudoer, vous perdrez l'accès à sudo, donc utilisez toujours visudo

8
répondu contactlp 2017-03-29 14:34:32

je me rends compte que je suis en retard à la fête sur cette question, mais pour des raisons de référence, j'ai pensé jeter mon 2c ici: j'utilise le plugin SSH pour Jenkins pour accomplir ceci (il suffit de configurer une cible localhost). De cette façon, je peux contenir le script directement dans Jenkins (comme une étape normale "Execute shell"), au lieu d'utiliser sudo pour invoquer un script externe.

5
répondu Nathan Crause 2015-11-06 19:09:20