0

这是一个有点奇怪的问题。

卡皮斯特拉诺 2.14.2

我正在使用 capistrano 部署几个 Node.js 项目,并且效果很好(在相同的 rvm 和 gemset Ruby 安装中)。但是,我想让 Airbrake 收到这些部署的通知。

使用“airbrake”Node.js 模块,并调用

airbrake.trackDeployment({repo: '...'}); 

有效,但不确定如何在部署时可靠地调用它一次。如果我在我的服务器中调用它,那么每次我的服务器启动时都会通知 Airbrake 一个“部署”,这显然是不正确的。

添加

require 'airbrake/capistrano'

deploy.rb 绝对行不通。

别人如何成功使用

airbrake.trackDeployment

?

4

2 回答 2

2

您可以创建一个在本地(例如在您的机器上)运行的简单 js 文件,该文件将 airbrake 通知为最后的部署任务。例如,您可以使用反引号运算符来运行任务:

deploy.task :notify_airbrake do
    `node notify_airbrake.js`
end

如果您没有在本地安装节点,您还可以选择其中一台服务器通过 ssh 运行通知脚本:

deploy.task :notify_airbrake do
    `ssh youserver "node notify_airbrake.js"`
end
于 2013-05-14T22:39:43.807 回答
0

基于这个解决方案http://dwradcliffe.com/2011/09/26/using-airbrake-with-node.html(显然嵌入在 Rails 应用程序中),我想出了以下内容,这完全取决于Javascript:

在我的 Node.js 根目录中,创建一个 deploy.js 文件,如下所示:

var airbrake = require('airbrake').createClient("AIRBRAKE_API_KEY");

var deployment = {rev: process.argv[2],
                  repo: process.argv[3],
                  env: process.argv[4],
                  user: process.argv[5]};

airbrake.trackDeployment(deployment, function(err, params) {
  if (err) {throw err}
  console.log('Tracked deployment of %s to %s', params.rev, params.env);
})

在 config/deploy.rb 中,添加

require 'airbrake/capistrano'

namespace :airbrake do
  desc "Notify Airbrake of a new deploy."
  task :deploy do
    system "node deploy.js #{current_revision} #{repository} #{stage} #{user}"
  end
end
于 2013-05-17T20:10:26.307 回答