Travis.yml ./gradlew: ปฏิเสธการอนุญาต


119

ใช้Travis CIสำหรับการโทรโครงการ Android ที่มีอยู่

$ ./gradlew build connectedCheck

ฉันได้รับข้อผิดพลาดนี้:

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

คำตอบ:


246

ขึ้นอยู่กับสิทธิ์ของผู้บริหารใน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
ไม่มีเหตุผลที่จะไม่ให้สคริปต์เช็คอินในคอมไพล์ด้วยสิทธิ์ที่ถูกต้อง (ฉันจะไป 1754) ฉันละเว้นจากการเพิ่มchmodคำสั่งเพิ่มเติมในบิลด์สคริปต์เพราะ 1) มันเพิ่มความซับซ้อนที่ไม่จำเป็น 2) จะไม่ทำงานสำหรับสมาชิกในทีมคนอื่น ๆ ที่โคลน repo ใหม่
Alex

ขอบคุณ มันช่วยฉัน
Dimitri de Jesus

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

ขอบคุณทุกคน รหัสนี้สามารถใช้ได้ โฟกัสที่สำคัญอยู่ที่chmod +x

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.