繁体   English   中英

使用capistrano部署Node.js项目时,如何成功通知Airbrake部署?

[英]How do I successfully notify Airbrake of a deployment when using capistrano to deploy a Node.js project?

这有点奇怪的问题。

Capistrano 2.14.2

我正在使用capistrano来部署一些Node.js项目,这很好(从同一个rvm和gemset Ruby安装中)。 但是,我希望Airbrake得到有关这些部署的通知。

使用'airbrake'Node.js模块,并调用

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

工作,但不知道如何在部署时可靠地调用它一次。 如果我在我的服务器内调用它,那么每次我的服务器启动时Airbrake都会收到“部署”的通知,这显然是不正确的。

添加

require 'airbrake/capistrano'

deploy.rb肯定不起作用。

其他人如何成功使用

airbrake.trackDeployment

您可以创建一个简单的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

基于这个解决方案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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM