Capistrano:cap staging git:check - 如何在git-ssh.sh中配置ssh路径?

时间:2014-09-03 11:28:32

标签: ssh capistrano3

我想弄清楚如何在执行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中设置此路径吗?

谢谢&干杯 米尔科

3 个答案:

答案 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'