2014-05-19 6 views
5

Używam najnowszej wersji Jenkins (v 1.563) i Node (0.10.28).Wtyczka Jenkins i NodeJS - Błąd odmowy uprawnień = 13

Mam projekt Java, który dobrze się kompiluje.

Po dodaniu kroku kompilacji wstępnej jako skryptu węzła (z Podaj węzeł Np. & npm bin/folder do sprawdzenia PATH), pojawia się następujący błąd, mimo że dałem 777 uprawnień do wszystkiego (węzeł, 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.... 

Krok kompilacji "Execute NodeJS Script" oznaczony jako kompilacja.
Po usunięciu kroku nodejs, wszystko dobrze się układa.
mojego skryptu jest prosta,

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

Full Error:

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.<init>(Proc.java:244) 
at hudson.Proc$LocalProc.<init>(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.<init>(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 
+0

Otrzymałem ten sam komunikat o błędzie, ale rozwiązałem go w następujący sposób: http://stackoverflow.com/a/32544539/555455 – hfm

Odpowiedz

1

Naprawiłem problem uruchamiając Tomcat z sudo. Pamiętaj, aby utworzyć plik setenv.sh (więcej informacji na temat setenv w Tomcat documentation). Pamiętaj, aby ustawić HOME_JRE w setenv przed uruchomieniem tomcat z sudo.

+0

Tomcat to ten, który zawiera serwer Jenkinsa? – xianlinbox

2

Naprawiono to bez sudo; Przypuszczam, że uruchamianie Jenkins w katalogu głównym jest bardzo niebezpieczne.

Oto ustawienia robocze:

enter image description here /var/lib/jenkins/tools powinny być własnością jenkins:jenkins:

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

Jeśli potrzebujesz pakietu nodejs zainstalowany w systemie (na przykład grunt), łatwiejszy sposób jest unikaniem okna Jenkinsa Globalne pakiety npm do zainstalowania (będą potrzebne uprawnienia root), ale uruchom to w konsoli Linux:

sudo npm install -g grunt 

będzie zainstalować chrząknięcie dla każdego i Jenkins będą mogli używać go podczas procesu budowy.