Travis.yml./gradlew: разрешение отклонено

Использование 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 .

Ответ 1

Это зависит от разрешения exec к вашему unix gradlew script.

Он может быть исправлен с помощью команды:

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, но просто изменяет время выполнения разрешения при выполнении.

Ответ 2

script:
 - chmod +x ./gradlew build connectedCheck

Спасибо всем. Этот код доступен. Основное внимание уделяется chmod +x