Развертывание с помощью Capistrano с локальным хранилищем в Windows выдает ошибку - PullRequest
2 голосов
/ 21 февраля 2011

Для работы Capistrano, должен ли репозиторий быть доступным снаружи?

Я разработал приложение rails в локальном каталоге, где также находится мой git-репозиторий.

Я регулярно делаю:

git add .
git commit -am "it works after my recent changes"

, сейчас я хочу развернуть:

cap deploy

Но это дает мне это сообщение об ошибке (пути немного изменились):

  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote D:\\path\\to\\railsapp\\.git HEAD"
  * executing "git clone  D:\\path\\to\\railsapp\\.git /home/user/railsapp/releases/20110221122258 && cd /home/user/railsapp/releases/20110221122258 && git checkout  -b deploy 70426fc8c8e81dff69f3ebf667de4f91dbd90119 && (echo 70426fc8c8e81dff69f3ebf667de4f91dbd90119 > /home/user/railsapp/releases/20110221122258/REVISION)"
    servers: ["my.server.tld"]
    [my.server.tld] executing command
 ** [my.server.tld :: out] Initialized empty Git repository in /home/user/railsapp/releases/20110221122258/.git/
 ** [my.server.tld :: out] Error reading response length from authentication socket.
 ** [my.server.tld :: out] Permission denied (publickey).
 ** fatal: The remote end hung up unexpectedly    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/user/railsapp/releases/20110221122258; true"
    servers: ["my.server.tld"]
    [my.server.tld] executing command
    command finished
failed: "sh -c 'git clone  D:\\path\\to\\railsapp\\.git /home/user/railsapp/releases/20110221122258 && cd /home/user/railsapp/releases/20110221122258 && git checkout  -b deploy 70426fc8c8e81dff69f3ebf667de4f91dbd90119&& (echo 70426fc8c8e81dff69f3ebf667de4f91dbd90119 > /home/user/railsapp/releases/20110221122258/REVISION)'" on my.server.tld

Что я делаю не так?

У меня в deploy.rb

require 'bundler/capistrano'
set :user, "username"
set :password, "password"
set :ssh_options, { :forward_agent => true }
set :application, "railsapp"
set :repository, "D:\\path\\to\\railsapp\\.git"
set :scm, :git
set :scm_verbose, true
default_run_options[:pty] = true
set :use_sudo, false
set :deploy_to, "/home/#{user}/#{application}"
role :app, "my.domain.tld"
role :web, "my.domain.tld"
role :db,  "my.domain.tld", :primary => true

namespace :deploy do

  desc "Restarting mod_rails with restart.txt"
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "touch #{current_path}/tmp/restart.txt"
  end

  desc "Additional Symlinks ( database.yml, etc. )"
  task :additional_symlink, :roles => :app do
    run "ln -s #{shared_path}/config/database.yml #{current_path}/config/database.yml"
  end

end
after "deploy:symlink","deploy:additional_symlink","deploy:migrate"

Ответы [ 3 ]

0 голосов
/ 19 мая 2011

Измените my.domain.tld на localhost или URL-адрес вашего удаленного сервера

0 голосов
/ 08 августа 2012

Я думаю, вам нужно изменить стратегию развертывания, чтобы скопировать:

 set :deploy_via, :copy
0 голосов
/ 21 февраля 2011

Ваш сервер должен иметь доступ к хранилищу, в котором размещен код.В данный момент происходит сбой при попытке проверить код, потому что у него нет прав доступа к вашей локальной машине.

Я бы порекомендовал разместить репозиторий на Github (бесплатно, если вы не возражаете против общедоступного источника).

Вы также можете настроить репозиторий git на сервере в качестве удаленного хоста иотправьте туда изменения из вашего локального репозитория.Затем сконфигурируйте capistrano для поиска этого хранилища при его развертывании.

Рад подробно остановиться на этом, если это не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...