Jenkins和NodeJS插件 – 权限被拒绝错误= 13

我正在运行最新版本的Jenkins (v 1.563)Node (0.10.28)

我有一个良好的Java项目。

当我添加一个预编译步骤作为节点脚本(与提供节点&npm bin /文件夹PATH选中),我得到以下错误,虽然我已经给所有的东西(节点,tomcat,jenkins)777权限。

 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.... 

构build步骤“执行NodeJS脚本”标记为失败。
当我删除nodejs步骤,它build立良好。
我的脚本很简单,

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

完整的错误:

 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 

修正它没有sudo; 我想在root下运行Jenkins是非常不安全的。

这里是工作设置:

在这里输入图像描述 /var/lib/jenkins/tools应该由jenkins:jenkins拥有jenkins:jenkins

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

如果你需要全局安装nodejs包(比如grunt ),最简单的方法就是避免jenkins窗口安装Global npm包 (它需要root权限),但是在linux控制台运行:

 sudo npm install -g grunt 

它会为每个人安装gruntJenkins将能够在构build过程中使用它。

我用sudo运行Tomcat解决了这个问题。 请记住创build一个setenv.sh文件(在Tomcat文档中阅读更多关于setenv的信息 )。 记得在setenv中设置HOME_JRE,然后用sudo运行tomcat。