Skip to content

Commit

Permalink
[dist] Send notifications for all distributions in openQA
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisBr committed Feb 8, 2018
1 parent 778b667 commit 9970dbd
Showing 1 changed file with 27 additions and 23 deletions.
50 changes: 27 additions & 23 deletions dist/openQA_mail_notification.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@
require 'yaml/store'

FROM = 'obs-admin@opensuse.org'
TO = 'obs-tests@opensuse.org'
TO_SUCCESS = 'obs-tests@opensuse.org'
TO_FAILED = 'obs-errors@opensuse.org'
SMTP_SERVER = ''
OPEN_QA = 'https://openqa.opensuse.org/'
DISTRIBUTION = 'obs'
VERSION = 'Unstable'
VERSIONS = ['Unstable', '2.9', '2.8']
GROUP = '17'

def get_build_information
def get_build_information(version)
begin
uri = URI.parse("#{OPEN_QA}api/v1/jobs?distri=#{DISTRIBUTION}&version=#{VERSION}")
uri = URI.parse("#{OPEN_QA}api/v1/jobs?distri=#{DISTRIBUTION}&version=#{version}")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
Expand All @@ -34,9 +35,9 @@ def modules_to_sentence(modules)
modules.map { |m| "#{m['name']} #{m['result']}" }
end

def build_message(build, successful_modules, failed_modules)
def build_message(build, successful_modules, failed_modules, version)
<<MESSAGE_END
See #{OPEN_QA}tests/overview?distri=#{DISTRIBUTION}&version=#{VERSION}&build=#{build}&groupid=#{GROUP}
See #{OPEN_QA}tests/overview?distri=#{DISTRIBUTION}&version=#{version}&build=#{build}&groupid=#{GROUP}
#{failed_modules.length + successful_modules.length} modules, #{failed_modules.length} failed, #{successful_modules.length} successful
Expand Down Expand Up @@ -66,25 +67,28 @@ def send_notification(from, to, subject, message)
end
end

build = get_build_information
VERSIONS.each do |version|
build = get_build_information(version)
store = YAML::Store.new("builds-#{version}.yml")
last_build = store.transaction { store[:name] }
result = last_build <=> build['name']

store = YAML::Store.new('builds.yml')
last_build = store.transaction { store[:name] }
result = last_build <=> build['name']
if result != 0 && build['state'] == 'done'
modules = build['modules']
successful_modules = modules.select { |m| m['result'] == 'passed' }
failed_modules = modules.select { |m| m['result'] == 'failed' }
successful_modules = modules_to_sentence(successful_modules)
failed_modules = modules_to_sentence(failed_modules)

if result != 0 && build['state'] == 'done'
modules = build['modules']
successful_modules = modules.select { |m| m['result'] == 'passed' }
failed_modules = modules.select { |m| m['result'] == 'failed' }
successful_modules = modules_to_sentence(successful_modules)
failed_modules = modules_to_sentence(failed_modules)
subject = "Build #{build['result']} in openQA: #{build['name']}"
message = build_message(build['settings']['BUILD'], successful_modules, failed_modules, version)
to = TO_SUCCESS
to = TO_FAILED unless failed_modules.empty?
send_notification(FROM, to, subject, message)

subject = "Build #{build['result']} in openQA: #{build['name']}"
message = build_message(build['settings']['BUILD'], successful_modules, failed_modules)
send_notification(FROM, TO, subject, message)

store.transaction do
store[:name] = build['name']
store[:last_run] = build['t_finished']
store.transaction do
store[:name] = build['name']
store[:last_run] = build['t_finished']
end
end
end

0 comments on commit 9970dbd

Please sign in to comment.