Travis.yml ./gradlew:权限被拒绝

Gab*_*tti 114 continuous-integration android gradle travis-ci

使用Travis CI进行现有的Android项目调用

$ ./gradlew build connectedCheck
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

/home/travis/build.sh: line 45: ./gradlew: Permission denied
The command "./gradlew build connectedCheck" failed and exited with 126 during .
Run Code Online (Sandbox Code Playgroud)

Gab*_*tti 237

它取决于你的unix 脚本的exec-permissiongradlew.

可以使用以下命令修复:

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

理解问题的一点点解释.
首先,您可以使用以下方法检查您的权限:

git ls-tree HEAD
Run Code Online (Sandbox Code Playgroud)

你会看见:

100644 blob xxxxxxxxxxx gradlew
Run Code Online (Sandbox Code Playgroud)

如您所见,该文件具有644权限.

通过在gradlew文件上设置可执行标志将其更改为755来修复它:

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

只需提交并推送更改:

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
Run Code Online (Sandbox Code Playgroud)

最后一次检查再次运行git ls-tree以查看更改:

git ls-tree HEAD
Run Code Online (Sandbox Code Playgroud)

你可以看到:

100755 blob xxxxxxxxxxxxx   gradlew
Run Code Online (Sandbox Code Playgroud)

解决此问题的另一种方法是使用:

before_install:
 - chmod +x gradlew
Run Code Online (Sandbox Code Playgroud)

这种解决方案不会更改git仓库中的权限,只是更改执行中的权限运行时.

  • `before_script: - chmod + x gradlew`为我工作 (16认同)
  • 有效.在我的情况下,我在'before_script:'中做到了.谢谢! (2认同)
  • 没有理由不将脚本以正确的权限签入 git(我会选择 1754)。我避免在构建脚本中添加额外的 `chmod` 命令,因为 1) 它增加了不必要的复杂性 2) 不适用于重新克隆 repo 的其他团队成员。 (2认同)

小智 5

script:
 - chmod +x ./gradlew build connectedCheck
Run Code Online (Sandbox Code Playgroud)

谢谢大家。此代码可用。重点是chmod +x