【问题标题】:Jenkins And NodeJS Plugin - Permission Denied Error=13Jenkins 和 NodeJS 插件 - 权限被拒绝错误 = 13
【发布时间】:2014-07-07 03:57:47
【问题描述】:

我正在运行最新版本的 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....

构建步骤“执行 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

【问题讨论】:

标签: java node.js jenkins jenkins-plugins


【解决方案1】:

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

这里是工作设置:

/var/lib/jenkins/tools 应该归 jenkins:jenkins 所有:

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

如果您需要全局安装任何 nodejs 包(例如,grunt),更简单的方法是避免 jenkins 窗口 全局安装 npm 包(它将需要 root权限),但在 linux 控制台中运行:

sudo npm install -g grunt

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

【讨论】:

    【解决方案2】:

    我通过使用 sudo 运行 Tomcat 解决了这个问题。请记住创建一个 setenv.sh 文件(在Tomcat documentation 中阅读有关 setenv 的更多信息)。记得在使用 sudo 运行 tomcat 之前在 setenv 中设置 HOME_JRE。

    【讨论】:

    • 那个tomcat是包含Jenkins服务器的吗?
    猜你喜欢
    • 2014-12-01
    • 2018-07-19
    • 2017-04-04
    • 2013-01-25
    • 2016-09-05
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多