Jenkins And NodeJS Plugin – Erreur d’autorisation refusée = 13

J’utilise la dernière version de Jenkins (v 1.563) et Node (0.10.28) .

J’ai un projet Java qui construit bien.

Lorsque j’ajoute une étape préalable à la génération en tant que script de nœud (avec l’option Fournir le nœud et le dossier bin / dossier à PATH cochée), le message d’erreur suivant s’affiche, même si j’ai accordé des permissions 777 à tout (nœud, tomcat, jenkins).

 FATAL: command execution failed java.io.IOException: Cannot run program "/home/sam/Apps/apache-tomcat-8.0.5/temp/hudson5090518537487301688.js" (in directory "/home/sam/.jenkins/jobs/WhiteSwan/workspace"): error=13, Permission Denied.... 

L’étape de construction “Exécuter le script NodeJS” est marquée comme étant un échec.
Lorsque je supprime l’étape nodejs, tout se passe bien.
Mon script est simple,

 node --version grunt --version bower --version 

Erreur complète:

 Checking out Revision e90d7b870646165dba30bd1a663644c0292e9844 (origin/master) > git config core.sparsecheckout > git checkout -f e90d7b870646165dba30bd1a663644c0292e9844 > git rev-list e90d7b870646165dba30bd1a663644c0292e9844 [workspace] $ /home/sam/Apps/apache-tomcat-8.0.5/temp/hudson5090518537487301688.js FATAL: command execution failed java.io.IOException: Cannot run program "/home/sam/Apps/apache-tomcat-8.0.5/temp /hudson5090518537487301688.js" (in directory "/home/sam/.jenkins/jobs/WhiteSwan /workspace"): error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042) at hudson.Proc$LocalProc.(Proc.java:244) at hudson.Proc$LocalProc.(Proc.java:216) at hudson.Launcher$LocalLauncher.launch(Launcher.java:775) at jenkins.plugins.nodejs.tools.DecoratedLauncher.launch(DecoratedLauncher.java:49) at jenkins.plugins.nodejs.tools.NpmPackagesBuildWrapper$2.launch(NpmPackagesBuildWrapper.java:88) at hudson.Launcher$ProcStarter.start(Launcher.java:355) at hudson.Launcher$ProcStarter.join(Launcher.java:362) at jenkins.plugins.nodejs.NodeJsCommandInterpreter.perform(NodeJsCommandInterpreter.java:84) at jenkins.plugins.nodejs.NodeJsCommandInterpreter.perform(NodeJsCommandInterpreter.java:42) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:745) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.build(MavenModuleSetBuild.java:909) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:676) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518) at hudson.model.Run.execute(Run.java:1706) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:529) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) Caused by: java.io.IOException: error=13, Permission denied at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:187) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) ... 18 more Build step 'Execute NodeJS script' marked build as failure Finished: FAILURE 

    Fixé sans un sudo; Je suppose qu’exécuter Jenkins sous root est très dangereux.

    Voici les parameters de travail:

    entrez la description de l'image ici /var/lib/jenkins/tools devrait appartenir à jenkins:jenkins :

     drwxr-xr-x 6 jenkins jenkins 4096 May 12 15:12 tools 

    Si vous avez besoin d’un paquet nodejs installé globalement (par exemple, grunt ), le moyen le plus simple est d’éviter l’installation des packages npm de la fenêtre jenkins (il aura besoin d’permissions root), mais exécutez-le dans la console Linux:

     sudo npm install -g grunt 

    Il installera grunt pour tout le monde et Jenkins pourra l’utiliser pendant le processus de construction.

    J’ai résolu le problème en exécutant Tomcat avec sudo. N’oubliez pas de créer un fichier setenv.sh (pour en savoir plus sur setenv, consultez la documentation de Tomcat ). N’oubliez pas de définir HOME_JRE dans setenv avant d’exécuter tomcat avec sudo.