问题标签 [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.
ruby - Capistrano 3 / SSHKit 在自定义任务中写入文件
我想用我的版本号标记当前部署的目录。
我尝试了这种方法:
在本地获取应用程序版本,将其存储到变量中,然后在远程主机上将其存储在文件中。
问题是,当我通过以下方式运行时:
命令如下所示:
分号惹麻烦了。我的 RELEASE 文件当然是空的。
我认为这是由于 SSHKit 进行了一些转义。
有什么线索吗?
ruby - 如何在脚本失败(错误)时继续并使用 Capistrano 3 捕获输出
在 Capistrano 2.x 中,您可以像这样简单地添加 :on_error => :continue :
我在 Capistrano 3.x 或 ssh-kit(底层通信)中看不到任何方法。任何帮助将不胜感激。
我已经尝试在开始/救援块中使用新方法,但这只会阻止它出错,但不会返回错误的输出。
我仍然想知道如何做到这一点,但我想出了一种方法来解决我的一个案例需要它,那就是如果它失败,只需设置服务器关闭。
这是假设它仅在关闭时出错。
shell - 在 capistrano 3 + sshkit + rvm 中默认使用 bash --login
我有以下 cap3 任务
用于设置
它应该在我的服务器上执行以下命令
但它给了我
它被解决了
现在我的任务看起来像这样
在 capistrano 2 中,我有以下设置
但在 cap3 中它不起作用
我尝试使用
但在 cap3 中它也不起作用
如何在没有 SSHkit.config 挂钩的情况下解决 cap3 中的bash --login问题?
ruby - 如何使用 Capistrano 3 作为另一个用户进行部署
我在 OS X 10.9.1 上使用 Ruby 2.1 和 Capistrano 3.1,部署到 CentOS 6.5。
在我的目标部署服务器上,我无法以我的部署用户admin@myserver
ssh 登录,但我可以 ssh 作为paul@myserver
然后登录sudo su - admin
。
我做了一个测试任务:
这按预期工作:
如何让 Capistrano 以管理员身份运行部署任务?即在运行命令之前以sudo su admin -c
或为前缀。sudo su
shell - Capistrano 3. 在服务器上设置 bash shell 而不是 csh
当 cap3 尝试在我的 FreeBSD 服务器上执行命令时 - 我有一个错误并且我的 cap3 任务不起作用
我知道为什么 - 因为我的服务器默认使用 csh shell
以下 cap3 变量对我不起作用
如何为 cap3 任务设置 shell?
ruby-on-rails - 显示 SSHKit 调用的 rake 任务的输出
我希望能够从 SSHKit 调用的 rake 任务中输出信息,但我不知道该怎么做。
假设我有以下 rake 任务:
如果我自己运行 :hello 任务,我会看到“hello world”语句。但是,从 sshkit 任务中调用它,我只会得到 SSHKit 信息。如何从 SSHKit 调用时出现的第一个 rake 任务中写出信息?
编辑1:
我发现您可以添加以下内容以获得基本的终端输出:
但是,同样,输出的信息是相同的——它告诉你它正在运行“rake hello”,而不是“rake hello”的输出。
logging - Capistrano 日志级别
我已将 Capistrano 配置的日志级别设置error
为防止出现详细输出。在deploy.rb
我添加了set :log_level, :error
. 这很好用。但是,当我通过 运行命令时execute
,它不会打印,因为它是在DEBUG
. 如何获得execute
要打印的命令输出?我可以使用capture
组合puts
来输出它,但是当我必须流式传输日志时这无济于事。
path - Capistrano 没有将路径环境应用于第二个命令
我的 Capistrano 部署挂在复合命令中的第二个命令上。
在 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 命令的方法,因为它是第二个命令。
bundler - 如何在精简重启时使用 capistrano 3 设置 RUBY_GC_MALLOC_LIMIT?
我使用 capistrano 3、rvm 和 bundler 进行部署。
瘦服务器像这样重新启动:
这工作正常并生成此命令:
现在我需要用这个设置RUBY_GC_MALLOC_LIMIT=90000000重新启动瘦,我不知道如何在执行命令中设置它?
该脚本必须设置 rvm 以了解捆绑包,并设置 RUBY_GC_MALLOC_LIMIT 用于瘦
不工作:
因为没有设置 rvm(执行 :bundle # 设置一个 rvm 钩子)
执行 "RUBY_GC_MALLOC_LIMIT=90000000", :bundle, :exec, "thin restart -O -C config/thin/staging.yml"
2.这里一样