Capistrano error tar: это не похоже на архив tar
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
Я запутался в двух вещах:
Почему Капистрано работает
git archive
здесь:git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157
Почему
tar
сбой?
6 ответов:
это происходит, когда РЕПО на сервере для развертывания перепутались. Мы говорим о голом РЕПО git, которое Capistrano по умолчанию поместит в
/var/www/$application/repo
(для справки других людей).в вашем случае он не имеет локального feature / Capistrano ветку, при запуске
git archive feature/Capistrano
ничего не выводится, что|
трубы. Чтобы подтвердить, ssh на сервер, cd в /home / rails/rails-capistrano / repo и запуститьgit branch
.
это работает git archive как способ экспорта дерева выбранной ветви. git archive "записывает его в стандартный вывод", поэтому Capistrano перенаправляет его на деготь для того, чтобы немедленно распаковать архив в новый каталог выпуска. (Почему Капистрано выбрал это вместо git checkout побеждает меня.)
деготь терпит неудачу, потому что он ничего не получает d:
Я могу придумать два возможных решения/способа устранения неполадок:
- ssh в сервер и вручную удалить папку РЕПО (например, в вашем случае / home / rails/rails-capistrano / repo), как указано в @lugolabs
- убедитесь, что РЕПО сервера использует ожидаемый пульт (ssh in, cd into repo/ и run
git remote -v
) - возможно, Вам просто нужно обновить:repo_url
в развернуть.rb (и удалить РЕПО/ реж).
Я думаю, что папка заполняется через git pull, поэтому она не должна быть пустой. Если вы видите его пустым, проблема заключается в том, что git не является тарболом.
проблема у меня была моя Капистрано развернуть.URL репозитория rb был установлен на другой, чем тот проект, в котором я работал. Чтобы исправить эту проблему, мне также пришлось войти на сервер и удалить папку app_name/repo, которая должна была кэшировать исходный плохой удаленный URL.