我想弄清楚如何在执行deploy命令后通过capistrano将git-ssh.sh
文件中的ssh路径设置为服务器。
实际上git-ssh.sh的第二行看起来像是:
exec /usr/bin/ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no "$@"
我无法直接在服务器上执行此命令。发生以下错误:
[5b4fcea9] /tmp/app.de/git-ssh.sh: line 2: /usr/bin/ssh: No such file or directory
在编辑/usr/local/bin/ssh
的ssh路径后,它运行良好,但每次调用cap staging deploy时,capistrano都会上传此文件。
有关详细信息,请参阅我在pastie上的日志,特别是在git中:检查部分: http://pastie.org/9523811
可以在deploy.rb中设置此路径吗?
谢谢&干杯 米尔科
答案 0 :(得分:1)
Rake::Task["deploy:check"].clear_actions
namespace :deploy do
task check: :'git:wrapper' do
on release_roles :all do
execute :mkdir, "-p", "#{fetch(:tmp_dir)}/#{fetch(:application)}/"
upload! StringIO.new("#!/bin/sh -e\nexec /usr/local/bin/ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no \"$@\"\n"), "#{fetch(:tmp_dir)}/#{fetch(:application)}/git-ssh.sh"
execute :chmod, "+x", "#{fetch(:tmp_dir)}/#{fetch(:application)}/git-ssh.sh"
end
end
end
答案 1 :(得分:0)
此行似乎是在capistrano源代码link here中硬编码。
为什么不在服务器上创建/usr/bin/ssh
符号链接,而不是更改capistrano源?所以这个:
ln -s /usr/local/bin/ssh /usr/bin/ssh
这将创建一个/usr/bin/ssh
符号链接,在执行时将运行/usr/local/bin/ssh
。
答案 2 :(得分:-2)
在Capfile中,如果添加以下行,则可以覆盖git任务:
require 'capistrano/git'