无法运行程序,权限被拒绝erro13 Jenkins

时间:2017-09-28 17:58:06

标签: java android jenkins

我在Jenkin上为android新项目创建了一份新工作。每当我运行该作业时,我收到错误java.io.ioexception错误13权限被拒绝。詹金说无法运行程序gradlew。我知道gradlew脚本需要根据错误说明执行权限。我授予了这些并重新开始jenkin工作。我仍然得到同样的错误。 Jenkin在构建之后恢复执行权限。当我从现有作业创建新作业并使用旧项目存储库配置时,它运行正常。当我配置新项目存储库时,它引发了权限问题。我在许可的情况下玩了很多但没有成功。我还比较了新旧项目脚本文件。线条差异很小但不应该成为一个问题。任何人都可以指导我做错了什么。

由于

3 个答案:

答案 0 :(得分:9)

这显然是一个许可问题。

java.io.IOException: Cannot run program "<http://jenkins.gradlew"
error=13, Permission denied
Caused by: java.io.IOException: error=13, Permission denied

有两种解决方案可以解决gradlew权限问题。

  • 转到Jenkin作业配置
  • 转到“构建”选项卡并检查gradlew可执行文件。

Jenkin将在您立即按下构建时更改权限。请记住,这些更改未提交。如果您的工作不是发布工作,则该过程正常。如果它是发布工作,它会创建我遇到的另一个问题。

:workspace:app:checkCommitNeeded FAILED
:app:release FAILED

* What went wrong:
Execution failed for task ':workspace:app:checkCommitNeeded'.
> You have uncommitted files:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   M gradlew

所以解决方法是

使用可执行位设置提交gradlew:

git update-index --chmod=+x gradlew
git commit

然后你将不再需要jenkins设置来设置它的可执行文件,这是导致第二个问题的解决方法。

希望这会花费一些时间,因为我花了几个小时来完成工作。

答案 1 :(得分:4)

我使用Github进行源代码管理。它在那里获取代码并且每次都更新它,因此在提交我的Jenkins工作之前将其更改为+ x并没有帮助。 在Linux中,该项目位于/.jenkins/workspace/MyProjectName/SomeSubFolder/gradlew - 并且在提交新作业时失去了+ x evereytime(我认为是644)。

解决方案是选择Make gradlew executable复选框(在Build --> Use Gradle Wrapper中) - 现在是755,并且正在执行gradle任务。

答案 2 :(得分:2)

您是否在为工作配置使用jenkins文件? 如果是这样,您需要在那里添加gradlew的权限更改。

sh 'chmod 755 ./gradlew'

听起来每次使用没有设置执行权限的版本都会更换gradlew,因此您需要通过脚本或jenkins文件将其作为jenkins作业的一部分来进行。