Błąd tarczy Capistrano: To nie wygląda jak archiwum 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      

Jestem zdezorientowany co do dwóch rzeczy:

  1. Dlaczego Capistrano działa git archivetutaj:
    git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

  2. Dlaczego tarzawodzi?

Odpowiedzi:


321

Miałem ten sam problem, dopóki nie zdałem sobie sprawy, że wyciągam nieistniejącą gałąź z gita.


53
Cóż za smarkacz z czoła.
Grant Birchmeier

20
Ja też jestem głupi
notaceo

12
Za drugim razem napotykam twoją odpowiedź, za drugim razem czuję się głupio!
Fabian de Pabian

11
Cieszę się, że to pytanie ma tak wiele pozytywnych opinii. Przynajmniej nie zawodzę samotny.
niszczenie

6
Poważnie, to prawdopodobnie 42. raz, kiedy robię to samo wyszukiwanie w Google i czytam tę odpowiedź xD
Cyril Duchon-Doris

19

Usunięcie app_name / repo również rozwiązało ten problem.


1
To działa dla mnie czasami, gdy pojawiają się problemy z repozytorium z wdrażaniem limitów, ale nie zawsze.
Jorge Orpinel

15

Dzieje się tak, gdy repozytorium na serwerze do wdrożenia jest pomieszane. Mówimy o gołym repozytorium git, które domyślnie umieściłby Capistrano /var/www/$application/repo(w celach informacyjnych).

W twoim przypadku nie ma funkcji lokalnej / gałęzi Capistrano, więc podczas uruchamiania git archive feature/Capistranonic nie jest wysyłane do tego |potoku. Aby potwierdzić, ssh do serwera, przejdź do / home / rails / rails-capistrano / repo i uruchom git branch.

  1. Działa archiwum git jako sposób na wyeksportowanie drzewa wybranej gałęzi. Archiwum git "wypisuje to na standardowe wyjście", więc Capistrano przekierowuje to do tar , aby natychmiast zdekompresować archiwum do katalogu nowego wydania. (Dlaczego Capistrano wybrał to zamiast kasy, pokonuje mnie.)

  2. tar nie działa, ponieważ nic nie otrzymuje d:

Przychodzą mi do głowy dwa możliwe rozwiązania / sposoby rozwiązania problemu:

  • ssh na serwer i ręcznie usuń folder repo (np. w twoim przypadku / home / rails / rails-capistrano / repo), jak wspomniano w @lugolabs
  • upewnij się, że repozytorium serwera używa zdalnego, którego się spodziewasz (ssh in, cd do repo / i uruchom git remote -v) - być może wystarczy zaktualizować swój :repo_urlplik w deploy.rb (i usunąć repo / dir).

Czy mamy inny sposób zamiast usuwania bieżącego repozytorium?
hainguyen

4

Myślę, że ten folder jest wypełniany przez git pull, więc nie powinien być pusty. Jeśli widzisz, że jest pusty, problem pochodzi z gita, a nie z archiwum.

Problem, który miałem, był taki, że adres URL mojego repozytorium capistrano deploy.rb był ustawiony na inny niż ten projekt, w którym pracowałem. Aby naprawić ten problem, musiałem również zalogować się do serwera i usunąć folder nazwa_aplikacji / repozytorium, który musi buforują oryginalny zły zdalny adres URL.


4
dla osób googlujących: sprawdź również, czy ustawiłeś istniejącą gałąź !!! ... pracował dla mnie :)
odpowiednik8

4

Ilekroć napotkałem ten błąd, było to spowodowane tym, że gałąź określona w moim pliku deploy / environment .rb nie została wpisana do git. Wykonaj add / commit / git push origin nazwa_gałęzi, a to prawdopodobnie sprawi, że wszystko będzie działać.


0

Używam Bedrock Roots (wordpress) do programowania, capistrano do wdrożeń i przepływu git. Natknąłem się na ten błąd podczas próby wdrożenia, podczas lokalnego oddziału poprawki / xxx. Skończyłem więc bieżące (scalone zmiany w celu rozwijania gałęzi), a następnie pomyślnie wdrożyłem.


Czy rozumiesz, dlaczego połączenie z programistą rozwiązało problem?
Eric Francis

Wdrażanie innych gałęzi może działać, ale pozostaje pytanie, dlaczego ta konkretna, którą próbujesz wdrożyć, nie działa? Mogę mieć odpowiedź.
Jorge Orpinel

@EricFrancis Właściwie tak) Jak stwierdza głosowana odpowiedź, poprawka nie istniała na zdalnym (skąd pojawia się Capistrano)
Sergey Dubovik
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.