У меня есть настройка Webistrano, которая развертывается с собственной парой секретных / открытых ключей. Я хотел бы использовать простую стратегию :remote_cache
, но не хочу копировать закрытый ключ на сервер развертывания.
Пока у меня есть следующие задачи:
namespace :ssh do
task :start_agent do
ssh_options[:forward_agent] = true
result = `ssh-agent -t 600`
# Extract env variables
%w(SSH_AUTH_SOCK SSH_AGENT_PID).each do |key|
if result =~ /#{key}=(.*?);/
ENV[key] = $1
end
end
cmd = "ssh-add #{ssh_keys}"
result = `cmd`
end
task :stop_agent do
# Kill the agent started previously
`ssh_agent -k $SSH_AGENT_PID`
end
end
before 'deploy', 'ssh:start_agent'
Это before :deploy
, кажется, работает на полпути, но у меня есть несколько проблем:
- Мне нужно остановить агент после развертывания (и после неудачного развертывания). Могу ли я перехватить задачу
ssh:stop_agent
? 1011 *
- Задача
deploy:update_code
завершается с ошибкой Невозможно разрешить ревизию для 'master' в хранилище 'git@git.eenet.ee: base / mms.git'
Кто-нибудь может пролить свет на это?