Travis.yml ./gradlew: İzin reddedildi


119

Mevcut bir Android projesi çağrısı için Travis CI'yi kullanma

$ ./gradlew build connectedCheck

Bu hatayı alıyorum:

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

Yanıtlar:


246

Unix betiğinizin yürütme iznine bağlıdır gradlew.

Şu komut kullanılarak düzeltilebilir:

git update-index --chmod=+x gradlew

Sorunu anlamak için küçük bir açıklama.
Öncelikle izinlerinizi aşağıdakileri kullanarak kontrol edebilirsiniz:

git ls-tree HEAD

Göreceksin:

100644 blob xxxxxxxxxxx gradlew

Gördüğünüz gibi dosyanın 644 izni var.

Gradlew dosyanızdaki yürütülebilir bayrağı 755 olarak değiştirerek düzeltin:

git update-index --chmod=+x gradlew

Sadece değişiklikleri yapın ve uygulayın:

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

Değişikliği görmek için git ls-tree'yi tekrar çalıştıran son bir kontrol:

git ls-tree HEAD

Görebilirsin:

100755 blob xxxxxxxxxxxxx   gradlew

Bu sorunu çözmenin başka bir yolu da kullanmaktır:

before_install:
 - chmod +x gradlew

Bu tür bir çözüm, git deponuzdaki izni değiştirmez, sadece yürütmedeki izin çalışma zamanını değiştirir.


2
İşe yaradı. Benim durumumda bunu 'before_script:' içinde yaptım. Teşekkürler!
Sudarshan Tanuku

1
Komut dosyasının git'e doğru izinlerle eklenmemesi için bir neden yok (1754'e giderdim). chmodDerleme komut dosyalarına ek komutlar eklemekten kaçınıyorum çünkü 1) gereksiz karmaşıklık katıyor 2) depoyu yeniden klonlayan diğer ekip üyeleri için işe yaramayacak.
Alex

Teşekkürler. Bana yardımcı oldu.
Dimitri de Jesus

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

Hepinize teşekkürler. Bu kod mevcuttur. Temel odak noktasıchmod +x

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.