2015-12-22 143 views
0

我已將brakeman rake任務設置爲通過Jenkins自動運行,但由於我已經解決了它發現的初始安全漏洞,因此Brakeman現在運行了99%時間。我不想每次都打開報告,看看沒有問題。我想要它(Jenkins,Brakeman或其他定製的東西)通過電子郵件(或其他方式)通知我是否發現新的漏洞。如果發現安全漏洞,Brakeman和/或Jenkins給我發電子郵件

任何人都可以想到一個方法來做到這一點?

+1

哼。我可以考慮創造一個CRON工作,甚至是每晚都會運行brakeman的工作(Sidekiq或任何其他BG工作人員),如果制動員返回非零值,那麼這意味着出了問題。我也可能使用[Exception Notification gem](https://github.com/smartinez87/exception_notification)向我發送安全漏洞內容爲 –

回答

3

這裏有兩種選擇:

  • 運行司閘員與-zrake brakeman:check(你可以有brakeman --rake以取代目前的Rake任務,以增加該選項),這將返回一個非零退出代碼,如果有的話發現警告。這應該會妨礙你的構建。在Jenkins中,將「電子郵件通知」添加爲「生成後操作」以向您發送電子郵件。使用Brakeman Jenkins plugin。您需要更改Brakeman的運行方式as documented here。然後使用插件的「高級...」選項來設置閾值,以將構建標記爲不穩定或構建失敗。完成設置後,將「電子郵件通知」添加爲「生成後操作」以向您發送電子郵件。

[跑步是不是真的推薦制動手用Rake因爲這樣會將加載整個應用程序。]

+0

的電子郵件,謝謝Justin。出於某種原因,brakeman --rake不會生成brakeman:check任務,但我查看了源代碼並發現可以使用result.filtered_warnings.empty?確定是否有任何漏洞發現,如果是的話發送電子郵件。 –

+0

奇數,對我有用:$ brakeman --rake 在lib/tasks/brakeman.rake中創建的任務 用法:rake brakeman:run [output_file] $ rake -T -f lib/tasks/brakeman.rake rake brakeman :check#用Brakeman檢查你的代碼 rake brakeman:運行[output_files]#運行Brakeman – Justin

+0

雖然它不會覆蓋你現有的文件。 – Justin

0

我結束了加強司閘員:運行任務發送電子郵件如果發現任何問題:

namespace :brakeman do 

desc "Run Brakeman" 
task :run, :emails do |t, args| 
    require 'brakeman' 

    file = ["tmp/brakeman_reports/brakeman_on_#{Date.today.to_s}.html"] 

    result = Brakeman.run :app_path => ".", :output_files => file, :print_report => true 

    unless result.filtered_warnings.empty? 
    BrakemanReportMailer.notify(args[:emails]).deliver 
    end 

末 結束