J'ai récemment commencé à utiliser Jenkins pour l'intégration. Tout allait bien jusqu'à ce que j'exécute des tâches sur le nœud maître sans commande Shell, mais je dois exécuter des tâches sur le nœud maître ainsi que sur le nœud esclave qui contient les commandes Shell. Je ne suis pas en mesure d'exécuter ces commandes Shell en tant qu'utilisateur root. j'ai essayé
SSH Keys
.Sudo
.Je reçois permission denied
erreur chaque fois que j'utilise l'une des méthodes ci-dessus.
Vous devez modifier l'autorisation de l'utilisateur jenkins
afin de pouvoir exécuter les commandes Shell. Vous pouvez installer les jenkins en tant que service (télécharger le package rpm), vous devrez peut-être modifier les ports car par défaut, il exécute http sur 8080 et AJP sur le port 8009.
Le processus suivant concerne CentOS
1. Ouvrez ce script (en utilisant VIM ou autre éditeur):
vim /etc/sysconfig/jenkins
2. Trouvez ceci $JENKINS_USER
et passez à "root":
$JENKINS_USER="root"
3. Modifiez ensuite la propriété de Jenkins home, webroot et logs:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
4) Redémarrez Jenkins et vérifiez que l'utilisateur a été changé:
service jenkins restart
ps -ef | grep jenkins
root
.Je déconseille d'exécuter l'utilisateur jenkins en tant que root. Cela pourrait exposer le système d'exploitation et tous les dépôts que jenkins peut construire.
L'exécution de n'importe quel script en tant que root est un risque pour la sécurité, mais une méthode légèrement plus sûre serait d'accorder à l'utilisateur jenkins Sudo un accès pour exécuter uniquement le script, sans avoir besoin d'un mot de passe.
Sudo visudo
et ajoutez ce qui suit:
jenkins ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script
Vérifiez à nouveau votre chemin via le journal de la console d'un script de génération ayant échoué. Celui illustré ici est celui par défaut.
Maintenant, dans la tâche jenkins, vous pouvez appeler Sudo $WORKSPACE/your script