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

use*_*390 1 java android jenkins

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

谢谢

use*_*390 11

这显然是一个许可问题.

java.io.IOException: Cannot run program "<http://jenkins.gradlew"
error=13, Permission denied
Caused by: java.io.IOException: error=13, Permission denied
Run Code Online (Sandbox Code Playgroud)

解决gradlew权限问题有两种解决方案.

  • 转到Jenkin Job配置
  • 转到Build选项卡并检查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
Run Code Online (Sandbox Code Playgroud)

所以解决方法是

使用可执行位集提交gradlew:

git update-index --chmod=+x gradlew
git commit
Run Code Online (Sandbox Code Playgroud)

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

希望它可以节省一些时间,因为我花了几个小时来完成工作.


Yog*_*jan 7

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

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