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

5
我正在运行最新版本的Jenkins(v 1.563)和Node(0.10.28)。
我有一个构建良好的Java项目。
当我添加一个节点脚本作为预构建步骤(勾选“提供Node和npm bin /文件夹到PATH”),尽管我已经给予所有东西(node,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....

构建步骤“执行NodeJS脚本”被标记为失败。
当我移除NodeJS步骤时,它可以正常构建。
我的脚本很简单,

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

我得到了相同的错误信息,但我像这样解决了它:https://dev59.com/X4Tba4cB1Zd3GeqP0g3k#32544539 - hfm
2个回答

2
没有使用sudo,我修复了这个问题;我认为在root下运行Jenkins非常不安全。
以下是正常工作的设置:
/var/lib/jenkins/tools 应该由 jenkins:jenkins 拥有: enter image description here
drwxr-xr-x   6 jenkins jenkins      4096 May 12 15:12 tools

如果您需要全局安装任何Node.js包(例如,grunt),更简单的方法是避免使用Jenkins窗口中的Global npm packages to install (它需要root权限),而是在Linux控制台中运行以下命令:
sudo npm install -g grunt

它将为所有人安装grunt,并且Jenkins能够在构建过程中使用它。

1

我通过使用sudo运行Tomcat来解决了问题。请记得创建一个setenv.sh文件(在Tomcat文档中了解更多关于setenv的内容)。在使用sudo运行Tomcat之前,请记得在setenv中设置HOME_JRE。


Tomcat是包含Jenkins服务器的主机吗? - xianlinbox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接