我在Jenkin上为android新项目创建了一份新工作。每当我运行该作业时,我收到错误java.io.ioexception错误13权限被拒绝。詹金说无法运行程序gradlew。我知道gradlew脚本需要根据错误说明执行权限。我授予了这些并重新开始jenkin工作。我仍然得到同样的错误。 Jenkin在构建之后恢复执行权限。当我从现有作业创建新作业并使用旧项目存储库配置时,它运行正常。当我配置新项目存储库时,它引发了权限问题。我在许可的情况下玩了很多但没有成功。我还比较了新旧项目脚本文件。线条差异很小但不应该成为一个问题。任何人都可以指导我做错了什么。
由于
答案 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将在您立即按下构建时更改权限。请记住,这些更改未提交。如果您的工作不是发布工作,则该过程正常。如果它是发布工作,它会创建我遇到的另一个问题。
: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作业的一部分来进行。