Travis.yml ./gradlew: permissão negada


119

Usando o Travis CI para uma chamada de projeto Android existente

$ ./gradlew build connectedCheck

Eu recebo este erro:

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

Respostas:


246

Depende da permissão exec para seu gradlewscript Unix .

Isso pode ser corrigido usando o comando:

git update-index --chmod=+x gradlew

Uma pequena descrição para entender o problema.
Em primeiro lugar, você pode verificar suas permissões usando:

git ls-tree HEAD

Você verá:

100644 blob xxxxxxxxxxx gradlew

Como você pode ver, o arquivo tem 644 permissões.

Corrija-o definindo o sinalizador executável em seu arquivo gradlew, alterando-o para 755:

git update-index --chmod=+x gradlew

Basta confirmar e enviar as alterações:

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

Uma última verificação executando git ls-tree novamente para ver a mudança:

git ls-tree HEAD

Você pode ver:

100755 blob xxxxxxxxxxxxx   gradlew

Outra maneira de resolver esse problema é usar:

before_install:
 - chmod +x gradlew

Esse tipo de solução não altera a permissão em seu repositório git, mas apenas altera o tempo de execução da permissão na execução.


2
Funcionou. Eu fiz isso em 'before_script:' no meu caso. Obrigado!
Sudarshan Tanuku

1
Não há razão para não ter o script verificado no git com as permissões corretas (eu escolheria 1754). Eu me abstenho de adicionar chmodcomandos adicionais em scripts de construção porque 1) adiciona complexidade desnecessária 2) não funcionará para outros membros da equipe que clonam o repositório novamente.
Alex

Obrigado. Isso me ajudou.
Dimitri de Jesus

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

Obrigado a todos. Este código está disponível. O foco principal está emchmod +x

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.