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.