2015-12-22 1 views
0

У меня есть задача с грачем-рейком, которая запускается автоматически через Jenkins, однако, поскольку я уже обращался к первоначальным уязвимостям безопасности, которые он нашел, Brakeman теперь работает на чистом 99% время. Я не хочу каждый раз открывать отчет, чтобы увидеть, что проблем нет. Я хочу, чтобы он (Jenkins, Brakeman или что-то обычай) уведомлял меня по электронной почте (или каким-либо другим способом), если обнаружил новую уязвимость.Имейте Brakeman и/или Jenkins, напишите мне, если обнаружены уязвимости безопасности.

Может ли кто-нибудь подумать о подходе для этого?

+1

хмм. Я могу подумать о создании задания CRON или даже (Sidekiq или любого другого работника BG), который запускает Brakeman каждую ночь, и от этого, если brakeman возвращает ненулевое значение, значит, что-то пошло не так. Я мог бы также использовать [Исключительный код уведомления] (https://github.com/smartinez87/exception_notification), чтобы отправить мне электронное письмо с содержимым уязвимости безопасности. –

ответ

3

Вот два варианта:

  • Run кондуктор с -z или rake brakeman:check (вы, возможно, придется заменить текущую задачу Rake с brakeman --rake добавить эту опцию), которая возвращает ненулевое код завершения, если таковые имеются предупреждения. Это должно привести к сбою вашей сборки. В Jenkins добавьте «Уведомление по электронной почте» в качестве «Действия после сборки», чтобы отправить вам электронное письмо.

  • Используйте Brakeman Jenkins plugin. Вам нужно будет изменить, как Brakeman запускается as documented here. Затем используйте опции «Дополнительно ...» для плагина, чтобы установить пороговые значения, чтобы отметить сборку как нестабильную или не выполнить сборку. После того, как это настроено, добавьте «Уведомление по электронной почте» как «Действие после сборки», чтобы отправить вам электронное письмо.

[Запуск кондуктор с граблями не рекомендуется, так как это излишне загружает все приложение.]

+0

Thanks Justin. По какой-то причине brakeman -rake не генерирует brakeman: проверьте задачу, но я посмотрел на источник и обнаружил, что могу использовать result.filtered_warnings.empty? чтобы определить, были ли обнаружены какие-либо уязвимости, и если да, отправьте электронное письмо. –

+0

Одд, работает для меня: $ кондуктор --rake Задача создана в Lib/задач/brakeman.rake Использование: грабли кондуктор: запустить [output_file] $ рейка -T -f Библиотека/задач/brakeman.rake граблей кондуктор : проверьте # Проверьте свой код с помощью Brakeman rake brakeman: run [output_files] # Run 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 

конец конец