ошибки развертывания capistrano 3

Использую капистрано 4.4, nginx, unicorn. при развертывании у меня такие ошибки:

bin/cap производственное развертывание: проверка работает нормально.

когда я запускаю развертывание bin/cap в первый раз, у меня возникает ошибка:

...
 [7e794b92]     Cloning into bare repository   
'opt/www/foreignernetwork/repo'...
INFO [7e794b92] Finished in 3.847 seconds with exit status 0 (successful).
DEBUG [19e30ae6] Running /usr/bin/env if test ! -d opt/www/foreignernetwork/repo; then echo "Directory does not exist 'opt/www/foreignernetwork/repo'" 1>&2; false; fi as [email protected]
DEBUG [19e30ae6] Command: if test ! -d opt/www/foreignernetwork/repo; then echo "Directory does not exist 'opt/www/foreignernetwork/repo'" 1>&2; false; fi
DEBUG [19e30ae6]    Directory does not exist 'opt/www/foreignernetwork/repo'
(Backtrace restricted to imported tasks)
cap aborted!
....

Когда я запускаю его снова, он говорит:

[4daafe62] Command: cd opt/www/foreignernetwork && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/foreignernetwork/git-ssh.sh /usr/bin/env git clone --mirror https://github.com/KonstantinSmirnov/foreignernetwork.git opt/www/foreignernetwork/repo )
DEBUG [4daafe62]    fatal: destination path 'opt/www/foreignernetwork/repo' already exists and is not an empty directory.
(Backtrace restricted to imported tasks)
cap aborted!
....
SSHKit::Command::Failed: git exit status: 128
git stdout: Nothing written
git stderr: fatal: destination path 'opt/www/foreignernetwork/repo' already exists and is not an empty directory.
....

Если я удаляю эту папку, то опять повторяется то же самое.

Вот мои файлы:

развернуть.rb:

lock '3.4.0'

set :application, 'foreignernetwork'
set :repo_url, 'https://github.com/KonstantinSmirnov/foreignernetwork.git'
set :scm, 'git'
set :deploy_via, :copy

set :deploy_to, 'opt/www/foreignernetwork'
set :user, 'deployuser'
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets}
set :ssh_options, { :forward_agent => true, :port => 12531 }
set :use_sudo, true

namespace :deploy do

%w[start stop restart].each do |command|
desc 'Manage Unicorn'
task command do
  on roles(:app), in: :sequence, wait: 1 do
    execute "/etc/init.d/unicorn_#{fetch(:application)} #{command}"
  end
end
end

  after :publishing, :restart

  after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
  # Here we can anything such as:
  # within release_path do
  #  execute :rake, 'cache:clear'
  # end
    end
  end

end

производство.rb:

role :app, %w{[email protected]}
role :web, %w{[email protected]}
role :db, %w{[email protected]}

единорог.рб:

root = "/opt/www/foreignernetwork/current"
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"

listen "/tmp/unicorn.foreignernetwork.sock"
worker_processes 1
timeout 30

пожалуйста, не могли бы вы помочь мне понять, как это исправить? Уже все раскопал...


person Neon_10    schedule 11.05.2015    source источник
comment
Не могли бы вы проверить, отвечает ли на ваш вопрос этот пост?   -  person Yaro Holodiuk    schedule 11.05.2015
comment
нет, я уже проверил, у меня нет двоения..   -  person Neon_10    schedule 11.05.2015
comment
постараюсь сделать все сначала   -  person Neon_10    schedule 11.05.2015


Ответы (1)


можно попробовать заменить

role :app, %w{[email protected]}
role :web, %w{[email protected]}
role :db, %w{[email protected]}

с участием

server '128.199.226.61', roles: %w(app web db), primary: true, user: 'deployuser'

на вашем производстве.рб

Насколько я читал, capistrano сталкивается с условиями гонки, пытаясь выполнять одинаковые задачи под разными ролями, когда вы пишете три отдельных пункта, относящихся к одному IP.

person Yaro Holodiuk    schedule 11.05.2015