如何在使用capistrano部署Node.js项目时成功通知Airbrake的部署?
问题描述:
这是一个古怪的问题。如何在使用capistrano部署Node.js项目时成功通知Airbrake的部署?
Capistrano的2.14.2
我使用Capistrano的部署夫妇Node.js的项目,并能正常工作(从同一RVM内和宝石Ruby安装)。但是,我希望Airbrake得到这些部署的通知。
使用“减速板”的Node.js模块,并呼吁
airbrake.trackDeployment({repo: '...'});
的作品,但不知道如何可靠地在部署时只用一次这个功能。如果我在服务器内调用它,那么每次启动服务器时,Airbrake都会收到“部署”通知,这显然不正确。
添加
require 'airbrake/capistrano'
以绝对deploy.rb不起作用。
如何他人成功使用
airbrake.trackDeployment
?
答
在此基础上的解决方案http://dwradcliffe.com/2011/09/26/using-airbrake-with-node.html,我想出了以下内容,这完全取决于使用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);
})
在配置/ 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
答
您可以创建一个简单的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
(这显然是嵌入在Rails应用程序)
是啊,这就是我想我需要做的。如果我在本地完成,我必须将正确的部署目标环境传递给.js程序。如果我使用SSH命令,那么我应该能够依赖于Node环境。谢谢!这很简单。享受我的赏金:)。 – 2013-05-15 23:04:49