Android Travis.yml./gradlew:权限被拒绝
对现有Android项目使用Travis CI,调用Android Travis.yml./gradlew:权限被拒绝,android,gradle,continuous-integration,travis-ci,Android,Gradle,Continuous Integration,Travis Ci,对现有Android项目使用Travis CI,调用 $ ./gradlew build connectedCheck 我得到这个错误: /home/travis/build.sh: line 45: ./gradlew: Permission denied The command "./gradlew build connectedCheck" failed and exited with 126 during . 它取决于unixgradlew脚本的exec权限 可以使用以下命令进行修复
$ ./gradlew build connectedCheck
我得到这个错误:
/home/travis/build.sh: line 45: ./gradlew: Permission denied
The command "./gradlew build connectedCheck" failed and exited with 126 during .
它取决于unix
gradlew
脚本的exec权限
可以使用以下命令进行修复:
git update-index --chmod=+x gradlew
了解问题的一点说明。首先,您可以使用以下方法检查您的权限:
git ls-tree HEAD
你会看到:
100644 blob xxxxxxxxxxx gradlew
如您所见,该文件具有644权限
通过在gradlew文件上设置可执行标志将其更改为755:
git update-index --chmod=+x gradlew
before_install:
- chmod +x gradlew
只需提交并推送更改:
git commit -m "permission access for travis"
[master e80ab1b] gradlew permission access for travis
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 gradlew
最后一次检查再次运行git ls tree以查看更改:
git ls-tree HEAD
你可以看到:
100755 blob xxxxxxxxxxxxx gradlew
解决此问题的另一种方法是使用:
git update-index --chmod=+x gradlew
before_install:
- chmod +x gradlew
这种解决方案不会更改git repo中的权限,只会更改执行中的权限运行时
script:
- chmod +x ./gradlew build connectedCheck
谢谢大家。
此代码可用。
关键的焦点是chmod+x,它起作用了。在我的例子中,我是在“之前的剧本”中这样做的。谢谢没有理由不让脚本以正确的权限签入git(我选择1754)。我不想在构建脚本中添加额外的
chmod
命令,因为1)它增加了不必要的复杂性2)对于重新克隆repo的其他团队成员不起作用。谢谢。它帮助了我。没有像“build”(可能有一个目录)和“connectedCheck”这样的文件,所以这里没有必要这样做。最好看看公认的答案