Travis.yml ./gradlew: У дозволі відмовлено


119

Використання 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 .

Відповіді:


246

Це залежить від дозволу exec до вашого gradlewсценарію unix .

Це можна виправити за допомогою команди:

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, а просто змінює час виконання дозволу під час виконання.


2
Це спрацювало. Я зробив це у "before_script:" у моєму випадку. Дякую!
Sudarshan Tanuku

1
Немає причин не запускати скрипт в git з правильними дозволами (я б пішов на 1754 рік). Я утримуюсь від додавання додаткових chmodкоманд у сценарії побудови, оскільки 1) це додає зайвої складності 2) не буде працювати для інших членів команди, які клонують репо заново.
Олексій

Дякую. Це мені допомогло.
Димитрій де Ісус

4
script:
 - chmod +x ./gradlew build connectedCheck

Дякую усім. Цей код доступний. Основна увага приділяєтьсяchmod +x

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.