簡體   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