我有一个使用自己的私钥/公钥对部署的 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
任务吗? deploy:update_code
任务失败并出现错误无法解析存储库 'git@git.eenet.ee:base/mms.git' 上的 'master' 的修订版
任何人都可以对此有所了解吗?