Travis.yml ./gradlew: autorizzazione negata


119

Utilizzo di Travis CI per una chiamata di progetto Android esistente

$ ./gradlew build connectedCheck

Ottengo questo errore:

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

Risposte:


246

Dipende dall'autorizzazione dell'exec al tuo gradlewscript unix .

Può essere risolto utilizzando il comando:

git update-index --chmod=+x gradlew

Una piccola descrizione per capire il problema.
Prima di tutto puoi controllare i tuoi permessi utilizzando:

git ls-tree HEAD

Vedrai:

100644 blob xxxxxxxxxxx gradlew

Come puoi vedere il file ha il permesso 644.

Risolvilo impostando il flag eseguibile sul tuo file gradlew cambiandolo in 755:

git update-index --chmod=+x gradlew

Basta eseguire il commit e inviare le modifiche:

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

Un ultimo controllo eseguendo nuovamente git ls-tree per vedere il cambiamento:

git ls-tree HEAD

Puoi vedere:

100755 blob xxxxxxxxxxxxx   gradlew

Un altro modo per risolvere questo problema è utilizzare:

before_install:
 - chmod +x gradlew

Questo tipo di soluzione non cambia l'autorizzazione nel tuo repository git, ma cambia solo il runtime di autorizzazione durante l'esecuzione.


2
Ha funzionato. L'ho fatto in "before_script:" nel mio caso. Grazie!
Sudarshan Tanuku,

1
Non c'è motivo per non fare il check-in dello script in git con i giusti permessi (sceglierei il 1754). Mi astengo dall'aggiungere chmodcomandi aggiuntivi negli script di compilazione perché 1) aggiunge complessità non necessaria 2) non funzionerà per altri membri del team che clonano di nuovo il repository.
Alex

Grazie. Mi ha aiutato.
Dimitri de Jesus,

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

Ringrazia tutti. Questo codice è disponibile. L'obiettivo principale èchmod +x

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.