【问题标题】:Travis.yml ./gradlew : Permission deniedTravis.yml ./gradlew:权限被拒绝
【发布时间】:2016-02-22 14:01:02
【问题描述】:

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

$ ./gradlew build connectedCheck

我收到此错误:

/home/travis/build.sh: line 45: ./gradlew: Permission denied
The command "./gradlew build connectedCheck" failed and exited with 126 during .

【问题讨论】:

    标签: android gradle continuous-integration travis-ci


    【解决方案1】:

    这取决于您的 unix gradlew 脚本的 exec-permission。

    可以使用以下命令修复:

    git update-index --chmod=+x gradlew
    

    了解问题的一点点。
    首先,您可以使用以下方式检查您的权限:

    git ls-tree HEAD
    

    你会看到:

    100644 blob xxxxxxxxxxx gradlew
    

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

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

    git update-index --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
    

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

    before_install:
     - chmod +x gradlew
    

    这种解决方案不会改变你的 git repo 中的权限,而只是改变执行中的权限运行时。

    【讨论】:

    • 成功了。在我的情况下,我在“before_script:”中做到了这一点。谢谢!
    • 没有理由不让脚本以正确的权限签入 git(我会选择 1754)。我放弃在构建脚本中添加额外的 chmod 命令,因为 1)它增加了不必要的复杂性 2)对重新克隆 repo 的其他团队成员不起作用。
    【解决方案2】:
    script:
     - chmod +x ./gradlew build connectedCheck
    

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

    【讨论】:

    • 没有像'build'(也许有一个目录)和'connectedCheck'这样的文件,所以这里没有必要。更好地查看接受的答案
    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多