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:
Dlaczego Capistrano działa
git archive
tutaj:
git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157
Dlaczego
tar
zawodzi?
capistrano
rvm-capistrano
capistrano3
Eric Francis
źródło
źródło
Usunięcie app_name / repo również rozwiązało ten problem.
źródło
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/Capistrano
nic nie jest wysyłane do tego|
potoku. Aby potwierdzić, ssh do serwera, przejdź do / home / rails / rails-capistrano / repo i uruchomgit branch
.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.)
tar nie działa, ponieważ nic nie otrzymuje d:
Przychodzą mi do głowy dwa możliwe rozwiązania / sposoby rozwiązania problemu:
git remote -v
) - być może wystarczy zaktualizować swój:repo_url
plik w deploy.rb (i usunąć repo / dir).źródło
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.
źródło
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ć.
źródło
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.
źródło