Capistrano не будет создавать релизы
Когда я запустил cap deploy
, Capistrano попытается создать папку, такую как $HOME/sites/MY_APP/releases/TIMESTAMP
. Я вижу команду, пытающуюся запустить, но она фактически не создаст папку.
Я могу скопировать команду непосредственно из выхода Capistrano и запустить команду через SSH, и она отлично работает без проблем.
Команда выглядит так:
cp -RPp /home/some_user/sites/my_cool_app/shared/cached-copy /home/some_user/sites/my_cool_app/releases/20111123164239 && (echo 59bf115868c2430cd0475ca1596998f1cfa3c084 > /home/some_user/sites/my_cool_app/releases/20111123164239/REVISION)
Почему команда проваливается через Capistrano, но успешно через SSH-терминал?
Ответы
Ответ 1
Я все еще не уверен, где проблема, но удаляет строку:
set :deploy_via, :remote_cache
Решил вещи для меня. Это похоже на ошибку, когда каталог выпусков не создается, и поэтому удаление этой строки пропускает этот шаг. Лучший подход, если вы хотите сохранить remote_cache, вероятно, добавит еще один шаг для настройки следующим образом:
after "deploy:setup", "deploy:create_release_dir"
namespace :deploy do
task :create_release_dir, :except => {:no_release => true} do
run "mkdir -p #{fetch :releases_path}"
end
end
Ответ 2
Игнорируйте часть ниже зеленой линии, но я сохраню их, только для справки для других.
Указанная проблема произошла для меня, когда я использовал версию Capistrano 3.9.x
. Когда я перешел на версию 3.4.0
, все это работало.
Вторая часть ответа:
Как только это случилось со мной, когда ключи github не были настроены в ~/.ssh/
.
Вы должны создать ключ ssh на сервере. Когда файл .pub
создается в ~/.ssh
, вы должны перейти на github.com(или любую другую услугу) и добавить вновь созданный ключ ssh на веб-сайт (его нужно найти на странице настроек или аналогичном).
Кроме того, на сервере добавьте правильную запись в файл ~/.ssh/config
, который соответствует идентификатору в развертывании capistrano script:
set :repo_url, proc { "[email protected]:your_git_name/#{fetch(:application)}.git" }
Итак, файл config
должен выглядеть так:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_my_new_key_on_the_server
Ответ 3
В моем случае речь шла о добавлении этой строки в файл deploy.rb
set :scm, :git