Jenkinsとかから実行してる時は、そっちでやればいいんだけど、単体でcronとか実行してるときに通知させたいなーと思って。
前提
- rspec3系
- serverspecとしてふつーに動く状態
- slack incoming webhookのurlをとっておく
Gemfileにslack-notifierたす
source 'https://rubygems.org'
gem 'serverspec'
gem 'rake'
gem 'slack-notifier'
lib/slack_formatter.rbを書く
require 'rspec'
require 'slack-notifier'
RSpec::Support.require_rspec_core "formatters/base_formatter"
class SlackFormatter < RSpec::Core::Formatters::BaseFormatter
RSpec::Core::Formatters.register self, :example_passed, :example_failed
def initialize(output)
super(output)
@results = Array.new
end
def example_passed(notification)
@results << "OK"
end
def example_failed(notification)
@results << "NG"
end
def close(notification)
post_slack()
end
def post_slack
notifier = Slack::Notifier.new('webhook-url')
if @results.include?("NG") then
note = {
text: "ダメー",
color: "warning"
}
else
note = {
text: "おっけー",
color: "good"
}
end
notifier.post text: "", attachments: [note]
end
end
.rspecにSlackFormatterの記述をたす
--color
--format d
--format SlackFormatter
実行するときはこんなかんじ
bundle exec rake spec:all -t -r ./lib/slack_formatter.rb
通知の内容を細かくアレコレしたいときは、slack_formatter.rbの中身をちゃんと書こう。
おしまい。