Travis.yml ./gradlew: Quyền bị từ chối


119

Sử dụng Travis CI để gọi dự án Android hiện có

$ ./gradlew build connectedCheck

Tôi gặp lỗi này:

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

Câu trả lời:


246

Nó phụ thuộc bởi quyền thực thi đối với gradlewtập lệnh unix của bạn .

Nó có thể được sửa bằng lệnh:

git update-index --chmod=+x gradlew

Một chút mô tả để hiểu vấn đề.
Trước hết, bạn có thể kiểm tra quyền của mình bằng cách sử dụng:

git ls-tree HEAD

Bạn sẽ thấy:

100644 blob xxxxxxxxxxx gradlew

Như bạn có thể thấy tệp có quyền 644.

Khắc phục sự cố bằng cách đặt cờ thực thi trên tệp gradlew của bạn, thay đổi nó thành 755:

git update-index --chmod=+x gradlew

Chỉ cần cam kết và đẩy các thay đổi:

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

Lần kiểm tra cuối cùng chạy lại git ls-tree để xem thay đổi:

git ls-tree HEAD

Bạn có thể thấy:

100755 blob xxxxxxxxxxxxx   gradlew

Một cách khác để giải quyết vấn đề này là sử dụng:

before_install:
 - chmod +x gradlew

Loại giải pháp này không thay đổi quyền trong git repo của bạn mà chỉ thay đổi thời gian chạy quyền trong quá trình thực thi.


2
Nó đã làm việc. Tôi đã làm điều đó trong 'before_script:' trong trường hợp của tôi. Cảm ơn!
Sudarshan Tanuku

1
Không có lý do gì để không đăng ký tập lệnh vào git với các quyền phù hợp (tôi muốn sử dụng 1754). Tôi kiêng thêm các chmodlệnh bổ sung trong các tập lệnh xây dựng vì 1) nó làm tăng thêm độ phức tạp không cần thiết 2) sẽ không hoạt động đối với các thành viên khác trong nhóm sao chép lại repo.
Alex,

Cảm ơn. Nó đã giúp đỡ tôi.
Dimitri de Jesus

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

Cảm ơn tất cả. Mã này có sẵn. Trọng tâm chính làchmod +x

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.