Commit d5c91bb9 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Migrate CI WebHooks and Emails to new tables

parent 2988e1fb
...@@ -54,7 +54,7 @@ class BuildsEmailService < Service ...@@ -54,7 +54,7 @@ class BuildsEmailService < Service
def fields def fields
[ [
{ type: 'textarea', name: 'recipients', placeholder: 'Emails separated by whitespace' }, { type: 'textarea', name: 'recipients', placeholder: 'Emails separated by comma' },
{ type: 'checkbox', name: 'add_pusher', label: 'Add pusher to recipients list' }, { type: 'checkbox', name: 'add_pusher', label: 'Add pusher to recipients list' },
{ type: 'checkbox', name: 'notify_only_broken_builds' }, { type: 'checkbox', name: 'notify_only_broken_builds' },
] ]
...@@ -72,10 +72,13 @@ class BuildsEmailService < Service ...@@ -72,10 +72,13 @@ class BuildsEmailService < Service
end end
def all_recipients(data) def all_recipients(data)
all_recipients = []
all_recipients <<= recipients.split(',')
if add_pusher? && data[:user][:email] if add_pusher? && data[:user][:email]
recipients + " #{data[:user][:email]}" all_recipients << "#{data[:user][:email]}"
else
recipients
end end
all_recipients
end end
end end
...@@ -2,7 +2,7 @@ class BuildEmailWorker ...@@ -2,7 +2,7 @@ class BuildEmailWorker
include Sidekiq::Worker include Sidekiq::Worker
def perform(build_id, recipients, push_data) def perform(build_id, recipients, push_data)
recipients.split(' ').each do |recipient| recipients.each do |recipient|
begin begin
case push_data['build_status'] case push_data['build_status']
when 'success' when 'success'
......
class MigrateCiWebHooks < ActiveRecord::Migration
include Gitlab::Database
def up
execute(
'INSERT INTO web_hooks (url, project_id, type, created_at, updated_at, push_events, build_events) ' \
"SELECT ci_web_hooks.url, projects.id, 'ProjectHook', ci_web_hooks.created_at, ci_web_hooks.updated_at, #{false_value}, #{true_value} FROM ci_web_hooks " \
'JOIN ci_projects ON ci_web_hooks.project_id = ci_projects.id ' \
'JOIN projects ON ci_projects.gitlab_id = projects.id'
)
end
end
class MigrateCiEmails < ActiveRecord::Migration
include Gitlab::Database
def up
execute(
'INSERT INTO services (project_id, type, created_at, updated_at, active, push_events, issues_events, merge_requests_events, tag_push_events, note_events, build_events, properties) ' \
"SELECT projects.id, 'BuildsEmailService', ci_services.created_at, ci_services.updated_at, #{true_value}, #{false_value}, #{false_value}, #{false_value}, #{false_value}, #{false_value}, #{true_value}, " \
"CONCAT('{\"notify_only_broken_builds\":\"', ci_projects.email_only_broken_builds, " \
"'\",\"add_pusher\":\"', ci_projects.email_add_pusher, '\",\"recipients\":\"', ci_projects.email_recipients, '\"}') " \
'FROM ci_services ' \
'JOIN ci_projects ON ci_services.project_id = ci_projects.id ' \
'JOIN projects ON ci_projects.gitlab_id = projects.id ' \
"WHERE ci_services.type = 'Ci::MailService' AND ci_services.active"
)
end
end
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20151203162134) do ActiveRecord::Schema.define(version: 20151209145909) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
......
...@@ -7,5 +7,23 @@ module Gitlab ...@@ -7,5 +7,23 @@ module Gitlab
def self.postgresql? def self.postgresql?
ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql' ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql'
end end
def true_value
case ActiveRecord::Base.connection.adapter_name.downcase
when 'postgresql'
"'t'"
else
1
end
end
def false_value
case ActiveRecord::Base.connection.adapter_name.downcase
when 'postgresql'
"'f'"
else
0
end
end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment