Ter kesalahan capistrano: Ini tidak terlihat seperti arsip tar

102
 INFO [050fe961] Running mkdir -p /home/rails/rails-
capistrano/releases/20140114234157 on staging-rails
DEBUG [050fe961] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh mkdir -p /home/rails/rails-capistrano/releases/20140114234157 )
 INFO [050fe961] Finished in 0.142 seconds with exit status 0 (successful).
 INFO [2dea2fe5] Running git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 on staging-rails
DEBUG [2dea2fe5] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 )
DEBUG [2dea2fe5]    fatal: Not a valid object name
DEBUG [2dea2fe5]    tar: This does not look like a tar archive
DEBUG [2dea2fe5]    tar: 
DEBUG [2dea2fe5]    Exiting with failure status due to previous errors      

Saya bingung tentang dua hal:

  1. Mengapa Capistrano berjalan di git archivesini:
    git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

  2. Mengapa targagal?

Eric Francis
sumber

Jawaban:

321

Saya memiliki masalah yang sama, sampai saya menyadari bahwa saya sedang menarik cabang yang tidak ada dari git.

kubbing
sumber
53
Benar-benar pukulan di dahi.
Berikan Birchmeier
20
Saya juga orang bodoh
notaceo
12
Kedua kalinya saya menemukan jawaban Anda, kedua kali ini terjadi, saya merasa bodoh!
Fabian de Pabian
11
Saya senang pertanyaan ini mendapat banyak suara positif. Setidaknya saya tidak gagal dalam kesepian.
merobek
6
Serius, ini mungkin ke-42 kalinya saya melakukan pencarian google yang sama dan membaca jawaban ini xD
Cyril Duchon-Doris
19

Menghapus app_name / repo juga memperbaiki masalah ini untuk saya.

lugolabs
sumber
1
Ini telah berhasil untuk saya beberapa kali setiap kali ada masalah repo dengan penerapan cap tetapi tidak selalu.
Jorge Orpinel
15

Ini terjadi ketika repo di server yang akan diterapkan rusak. Kita berbicara tentang repo git kosong yang akan dimasukkan Capistrano secara default /var/www/$application/repo(untuk referensi orang lain).

Dalam kasus Anda, itu tidak memiliki fitur lokal / cabang Capistrano jadi ketika menjalankan git archive feature/Capistranotidak ada output ke |pipa itu. Untuk mengonfirmasi, ssh ke server, cd ke / home / rails / rails-capistrano / repo, dan jalankan git branch.

  1. Ini menjalankan arsip git sebagai cara untuk mengekspor pohon cabang yang dipilih. arsip git "menuliskannya ke keluaran standar" sehingga Capistrano mengalihkannya ke tar untuk segera membuka kompresi arsip ke dalam direktori rilis baru Anda. (Mengapa Capistrano memilih ini daripada git checkout mengalahkan saya.)

  2. tar gagal karena tidak menerima apa-apa d:

Saya dapat memikirkan dua kemungkinan solusi / cara untuk memecahkan masalah:

  • ssh ke server dan hapus folder repo secara manual (misalnya dalam kasus Anda / home / rails / rails-capistrano / repo) seperti yang disebutkan oleh @lugolabs
  • pastikan repo server menggunakan remote yang Anda harapkan (ssh in, cd ke repo /, dan jalankan git remote -v) - Anda mungkin hanya perlu mengupdate :repo_urldi deploy.rb (dan menghapus repo / dir).
Jorge Orpinel
sumber
Apakah kami memiliki cara lain selain menghapus repo saat ini?
hainguyen
4

Saya pikir folder itu diisi melalui git pull, jadi tidak boleh kosong. Jika Anda melihatnya kosong masalahnya adalah dari git bukan tarball.

Masalah yang saya hadapi adalah URL repositori capistrano deploy.rb saya disetel ke yang berbeda dari proyek yang saya kerjakan. Untuk memperbaiki masalah ini, saya juga harus masuk ke server dan menghapus folder app_name / repo yang harus telah menyimpan cache URL jarak jauh asli yang buruk.

LessQuesar
sumber
4
untuk orang-orang googling: periksa juga apakah Anda menyetel cabang yang ada !!! ... bekerja untuk saya :)
equivalent8
4

Setiap kali saya mengalami kesalahan ini, itu karena cabang yang ditentukan dalam file deploy / environment .rb saya tidak diperiksa ke git. Lakukan add / commit / git push origin branch_name dan itu kemungkinan akan membuat semuanya berfungsi.

fuzzygroup
sumber
0

Saya menggunakan Bedrock Roots (wordpress) untuk pengembangan, capistrano untuk menyebarkan dan aliran git. Tersandung pada kesalahan ini ketika mencoba untuk menyebarkan, saat berada di hotfix / xxx cabang secara lokal. Jadi saya menyelesaikan saat ini (perubahan gabungan untuk mengembangkan cabang) dan kemudian berhasil diterapkan.

Sergey Dubovik
sumber
Apakah Anda mengerti mengapa menggabungkan ke develop memperbaiki masalah Anda?
Eric Francis
Menerapkan cabang lain mungkin berhasil, tetapi pertanyaannya tetap mengapa cabang tertentu yang Anda coba terapkan tidak berfungsi? Saya mungkin punya jawaban.
Jorge Orpinel
@EricFrancis Sebenarnya, saya melakukannya sekarang) Seperti yang dinyatakan dalam jawaban yang dipilih, hotfix tidak ada di remote (tempat capistrano menyebarkan)
Sergey Dubovik