问题标签 [sshkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3514 浏览

ruby - Capistrano 3 / SSHKit 在自定义任务中写入文件

我想用我的版本号标记当前部署的目录。

我尝试了这种方法:

在本地获取应用程序版本,将其存储到变量中,然后在远程主机上将其存储在文件中。

问题是,当我通过以下方式运行时:

命令如下所示:

分号惹麻烦了。我的 RELEASE 文件当然是空的。

我认为这是由于 SSHKit 进行了一些转义。

有什么线索吗?

0 投票
2 回答
2381 浏览

ruby - 如何在脚本失败(错误)时继续并使用 Capistrano 3 捕获输出

在 Capistrano 2.x 中,您可以像这样简单地添加 :on_error => :continue :

我在 Capistrano 3.x 或 ssh-kit(底层通信)中看不到任何方法。任何帮助将不胜感激。

我已经尝试在开始/救援块中使用新方法,但这只会阻止它出错,但不会返回错误的输出。

我仍然想知道如何做到这一点,但我想出了一种方法来解决我的一个案例需要它,那就是如果它失败,只需设置服务器关闭。

这是假设它仅在关闭时出错。

0 投票
1 回答
2232 浏览

shell - 在 capistrano 3 + sshkit + rvm 中默认使用 bash --login

我有以下 cap3 任务

用于设置

它应该在我的服务器上执行以下命令

但它给了我

它被解决了

现在我的任务看起来像这样

在 capistrano 2 中,我有以下设置

但在 cap3 中它不起作用

我尝试使用

但在 cap3 中它也不起作用

如何在没有 SSHkit.config 挂钩的情况下解决 cap3 中的bash --login问题?

0 投票
1 回答
1979 浏览

ruby - 如何使用 Capistrano 3 作为另一个用户进行部署

我在 OS X 10.9.1 上使用 Ruby 2.1 和 Capistrano 3.1,部署到 CentOS 6.5。

在我的目标部署服务器上,我无法以我的部署用户admin@myserverssh 登录,但我可以 ssh 作为paul@myserver然后登录sudo su - admin

我做了一个测试任务:

这按预期工作:

如何让 Capistrano 以管理员身份运行部署任务?即在运行命令之前以sudo su admin -c或为前缀。sudo su

0 投票
2 回答
677 浏览

shell - Capistrano 3. 在服务器上设置 bash shell 而不是 csh

当 cap3 尝试在我的 FreeBSD 服务器上执行命令时 - 我有一个错误并且我的 cap3 任务不起作用

我知道为什么 - 因为我的服务器默认使用 csh shell

以下 cap3 变量对我不起作用

如何为 cap3 任务设置 shell?

0 投票
0 回答
215 浏览

ruby - Capistrano:部署失败并出现错误:#

我正在努力将一个应用程序升级到 Rails 4/Ruby 2/Cap 3。我觉得我已经完成了 80%。运行以下 capistrano 部署任务时:

我收到以下错误:

The deploy has failed with an error: #<Errno::EPROTO: Protocol error @ rb_file_s_stat -

当我不使用此任务时,部署工作正常。该错误使我对从哪里开始调试感到困惑。

更新:

我几乎可以肯定该错误与我对更新的使用有关!方法,我相信这会将这个错误放入 SSHKit 的领域。


您可以使用 etree 库中的 find() 或 findall() 函数。

0 投票
1 回答
920 浏览

ruby-on-rails - 显示 SSHKit 调用的 rake 任务的输出

我希望能够从 SSHKit 调用的 rake 任务中输出信息,但我不知道该怎么做。

假设我有以下 rake 任务:

如果我自己运行 :hello 任务,我会看到“hello world”语句。但是,从 sshkit 任务中调用它,我只会得到 SSHKit 信息。如何从 SSHKit 调用时出现的第一个 rake 任务中写出信息?

编辑1:

我发现您可以添加以下内容以获得基本的终端输出:

但是,同样,输出的信息是相同的——它告诉你它正在运行“rake hello”,而不是“rake hello”的输出。

0 投票
1 回答
10509 浏览

logging - Capistrano 日志级别

我已将 Capistrano 配置的日志级别设置error为防止出现详细输出。在deploy.rb我添加了set :log_level, :error. 这很好用。但是,当我通过 运行命令时execute,它不会打印,因为它是在DEBUG. 如何获得execute要打印的命令输出?我可以使用capture组合puts来输出它,但是当我必须流式传输日志时这无济于事。

0 投票
1 回答
63 浏览

path - Capistrano 没有将路径环境应用于第二个命令

我的 Capistrano 部署挂在复合命令中的第二个命令上。

https://github.com/capistrano/capistrano/blob/5986983915163e6681f2546bf6fad599d58cd024/lib/capistrano/dsl.rb#L59

在 SSHKit 尝试运行以下命令时:

cd /home/lawfm/deployments/staging/repo && git rev-parse

我得到一个 bash: git: command not found错误。

我相信这个问题记录在这里: https ://github.com/capistrano/capistrano/issues/675

我的部署在 3.0.1 中工作,但升级到 3.1 时引入了错误。起初,我读到 pty 现在默认是打开的,所以我设置:

set :pty, false

不幸的是,似乎 .bash_profile 和 .profile 都没有被加载,因此任何增加 PATH 的尝试都没有结果。

我似乎无法找到设置路径甚至直接映射 git 命令的方法,因为它是第二个命令。

0 投票
1 回答
603 浏览

bundler - 如何在精简重启时使用 capistrano 3 设置 RUBY_GC_MALLOC_LIMIT?

我使用 capistrano 3、rvm 和 bundler 进行部署。

瘦服务器像这样重新启动:

这工作正常并生成此命令:

现在我需要用这个设置RUBY_GC_MALLOC_LIMIT=90000000重新启动瘦,我不知道如何在执行命令中设置它?

该脚本必须设置 rvm 以了解捆绑包,并设置 RUBY_GC_MALLOC_LIMIT 用于瘦

不工作:

  1. 因为没有设置 rvm(执行 :bundle # 设置一个 rvm 钩子)

    执行 "RUBY_GC_MALLOC_LIMIT=90000000", :bundle, :exec, "thin restart -O -C config/thin/staging.yml"

2.这里一样