这是一个有点奇怪的问题。
Capistrano 2.14.2
我正在使用capistrano部署两个Node.js项目,并且工作得很好(在相同的rvm和gemset Ruby安装中)。但是,我希望将这些部署通知给Airbrake。
使用“airbrake”Node.js模块,并调用
airbrake.trackDeployment({repo: '...'}); 工作,但不确定如何在部署时可靠地调用它一次。如果我在我的服务器中调用它,那么每次我的服务器启动时都会通知Airbrake一个“部署”,这显然是不正确的。
添加
require 'airbrake/capistrano'to deploy.rb肯定不起作用。
其他人如何成功地使用
airbrake.trackDeployment发布于 2013-05-18 04:10:26
基于这个解决方案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-15 06:39:44
您可以创建一个简单的js文件,该文件将在本地运行(例如,在您的机器上),将airbrake通知为最后一个部署任务。例如,您可以使用反引号运算符来运行任务:
deploy.task :notify_airbrake do
`node notify_airbrake.js`
end如果您没有在本地安装节点,您还可以选择其中一个服务器通过ssh运行通知脚本:
deploy.task :notify_airbrake do
`ssh youserver "node notify_airbrake.js"`
endhttps://stackoverflow.com/questions/16406827
复制相似问题