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?

Eric Francis
źródło

Odpowiedzi:

321

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

kubbing
źródło
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.

lugolabs
źródło
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).
Jorge Orpinel
źródło
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.

LessQuesar
źródło
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ć.

fuzzygroup
źródło
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.

Sergey Dubovik
źródło
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