Travis.yml ./gradlew : 권한이 거부되었습니다.


119

기존 Android 프로젝트 호출에 Travis CI 사용

$ ./gradlew build connectedCheck

이 오류가 발생합니다.

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

답변:


246

유닉스 스크립트 에 대한 exec 권한 에 따라 다릅니다 gradlew.

다음 명령을 사용하여 수정할 수 있습니다.

git update-index --chmod=+x gradlew

문제를 이해하기위한 약간의 설명.
먼저 다음을 사용하여 권한을 확인할 수 있습니다.

git ls-tree HEAD

다음이 표시됩니다.

100644 blob xxxxxxxxxxx gradlew

보시다시피 파일에는 644 권한이 있습니다.

gradlew 파일에서 실행 가능 플래그를 755로 변경하여 수정하십시오.

git update-index --chmod=+x gradlew

변경 사항을 커밋하고 푸시하면됩니다.

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

변경 사항을 확인하기 위해 git ls-tree를 다시 실행하는 마지막 확인 :

git ls-tree HEAD

너는 볼 수있어:

100755 blob xxxxxxxxxxxxx   gradlew

이 문제를 해결하는 또 다른 방법은 다음을 사용하는 것입니다.

before_install:
 - chmod +x gradlew

이러한 종류의 솔루션은 git repo의 권한을 변경하지 않고 실행시 권한 런타임 만 변경합니다.


2
효과가있었습니다. 제 경우에는 'before_script :'에서 그렇게했습니다. 감사!
Sudarshan Tanuku

1
스크립트를 올바른 권한으로 git에 체크인하지 않을 이유가 없습니다 (1754 년에 갈 것입니다). chmod1) 불필요한 복잡성을 추가합니다. 2) 리포지토리를 새로 복제하는 다른 팀 구성원에게는 작동하지 않기 때문에 빌드 스크립트에 추가 명령을 추가하지 않습니다.
Alex

감사. 그것은 나를 도왔다.
Dimitri de Jesus

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

모두 감사합니다. 이 코드를 사용할 수 있습니다. 핵심 초점은chmod +x

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.