![](/img/trans.png)
[英]How do I deploy Node.js code to run on an interval without exceeding free deployment tiers
[英]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.