Travis.yml ./gradlew: Berechtigung verweigert

119

Verwenden von Travis CI für einen vorhandenen Android-Projektaufruf

$ ./gradlew build connectedCheck

Ich erhalte diesen Fehler:

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

Antworten:

246

Dies hängt von der Exec-Berechtigung für Ihr Unix- gradlewSkript ab.

Es kann mit dem folgenden Befehl behoben werden:

git update-index --chmod=+x gradlew

Eine kleine Beschreibung, um das Problem zu verstehen.
Zunächst können Sie Ihre Berechtigungen überprüfen mit:

git ls-tree HEAD

Du wirst sehen:

100644 blob xxxxxxxxxxx gradlew

Wie Sie sehen können, hat die Datei die Berechtigung 644.

Beheben Sie das Problem, indem Sie das Flag für ausführbare Dateien in Ihrer Gradlew-Datei auf 755 ändern:

git update-index --chmod=+x gradlew

Übernehmen Sie einfach die Änderungen und drücken Sie sie weiter:

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

Eine letzte Überprüfung, bei der git ls-tree erneut ausgeführt wird, um die Änderung festzustellen:

git ls-tree HEAD

Du kannst sehen:

100755 blob xxxxxxxxxxxxx   gradlew

Eine andere Möglichkeit, dieses Problem zu lösen, besteht darin, Folgendes zu verwenden:

before_install:
 - chmod +x gradlew

Diese Art von Lösung ändert nicht die Berechtigung in Ihrem Git-Repo, sondern nur die Berechtigungslaufzeit in der Ausführung.

Gabriele Mariotti
quelle
2
Es funktionierte. Ich habe das in 'before_script:' in meinem Fall gemacht. Vielen Dank!
Sudarshan Tanuku
1
Es gibt keinen Grund, das Skript nicht mit den richtigen Berechtigungen in Git einzuchecken (ich würde mich für 1754 entscheiden). Ich verzichte auf das Hinzufügen zusätzlicher chmodBefehle in Build-Skripten, da 1) unnötige Komplexität entsteht 2) für andere Teammitglieder, die das Repo erneut klonen, nicht funktioniert.
Alex
Vielen Dank. Es hat mir geholfen.
Dimitri de Jesus
4
script:
 - chmod +x ./gradlew build connectedCheck

Vielen Dank an alle. Dieser Code ist verfügbar. Der Schwerpunkt liegt aufchmod +x

Allen.Cai
quelle