Travis.yml ./gradlew: Autorisation refusée

119

Utilisation de Travis CI pour un appel de projet Android existant

$ ./gradlew build connectedCheck

J'obtiens cette erreur:

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

Réponses:

246

Cela dépend de la permission d' exécution de votre gradlewscript unix .

Il peut être corrigé à l'aide de la commande:

git update-index --chmod=+x gradlew

Une petite description pour comprendre le problème.
Tout d'abord, vous pouvez vérifier vos autorisations en utilisant:

git ls-tree HEAD

Tu verras:

100644 blob xxxxxxxxxxx gradlew

Comme vous pouvez le voir, le fichier a la permission 644.

Corrigez-le en définissant l'indicateur exécutable sur votre fichier gradlew en le changeant en 755:

git update-index --chmod=+x gradlew

Engagez-vous et appliquez les changements:

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

Une dernière vérification exécutant à nouveau git ls-tree pour voir le changement:

git ls-tree HEAD

Tu peux voir:

100755 blob xxxxxxxxxxxxx   gradlew

Une autre façon de résoudre ce problème consiste à utiliser:

before_install:
 - chmod +x gradlew

Ce type de solution ne modifie pas l'autorisation dans votre dépôt git, mais modifie simplement le temps d'exécution des autorisations dans l'exécution.

Gabriele Mariotti
la source
2
Ça a marché. Je l'ai fait dans 'before_script:' dans mon cas. Merci!
Sudarshan Tanuku
1
Il n'y a aucune raison de ne pas enregistrer le script dans git avec les bonnes autorisations (j'irais pour 1754). Je m'abstiens d'ajouter des chmodcommandes supplémentaires dans les scripts de construction car 1) cela ajoute une complexité inutile 2) ne fonctionnera pas pour les autres membres de l'équipe qui clonent à nouveau le dépôt.
Alex
Merci. Ça m'a aidé.
Dimitri de Jesus le
4
script:
 - chmod +x ./gradlew build connectedCheck

Merci a tous. Ce code est disponible. L'accent est mis surchmod +x

Allen.Cai
la source