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