Travis.yml ./gradlew : Toestemming geweigerd

Travis CIgebruiken voor een bestaand Android-project met de naam

$ ./gradlew build connectedCheck

Ik krijg deze foutmelding:

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

Antwoord 1, autoriteit 100%

Het hangt af van de exec-permissionvan je unix gradlew-script.

Het kan worden opgelost met het commando:

git update-index --chmod=+x gradlew

Een kleine beschrijving om het probleem te begrijpen.
Allereerst kunt u uw rechten controleren met:

git ls-tree HEAD

Je zult zien:

100644 blob xxxxxxxxxxx gradlew

Zoals je kunt zien heeft het bestand 644 permissies.

Repareer het door de uitvoerbare vlag op je gradlew-bestand in te stellen en te veranderen in 755:

git update-index --chmod=+x gradlew

Bevestig de wijzigingen en druk ze door:

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

Een laatste controle waarbij git ls-tree opnieuw wordt uitgevoerd om de verandering te zien:

git ls-tree HEAD

Je kunt zien:

100755 blob xxxxxxxxxxxxx   gradlew

Een andere manier om dit probleem op te lossen is door het volgende te gebruiken:

before_install:
 - chmod +x gradlew

Dit soort oplossing verandert de toestemming in je git repo niet, maar verandert alleen de runtime van de toestemming in de uitvoering.


Antwoord 2, autoriteit 2%

script:
 - chmod +x ./gradlew build connectedCheck

Bedankt allemaal.
Deze code is beschikbaar.
De belangrijkste focus ligt op chmod +x

Other episodes