Capistrano не будет создавать релизы - PullRequest
11 голосов
/ 23 ноября 2011

Когда я запускаю 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?

Ответы [ 3 ]

22 голосов
/ 25 ноября 2011

Я до сих пор не уверен, откуда возникла проблема, но удаляю строку:

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
0 голосов
/ 02 февраля 2018

В моем случае это был вопрос добавления этой строки в файл deploy.rb

set :scm, :git
0 голосов
/ 04 сентября 2017

Игнорировать часть ниже зеленой линии, но я буду держать их, просто для справки для других.

Упомянутая проблема возникала у меня, когда я использовал версию Capistrano 3.9.x.Когда я опустился до версии 3.4.0, все это работало.


Вторая часть ответа:

Однажды это случилось со мной, когда ключи github не были установлены в ~/.ssh/.

Вы должны сгенерировать ключ ssh на сервере.После того, как файл .pub сгенерирован в ~/.ssh, вы должны зайти на github.com (или любой другой сервис) и добавить вновь сгенерированный ключ ssh на веб-сайт (его можно найти на странице настроек или аналогичном).Кроме того, на сервере добавьте правильную запись в ~/.ssh/config файле, который соответствует идентификации в сценарии развертывания capistrano:

set :repo_url, proc { "git@github.com: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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...