Skip to content
Snippets Groups Projects
Commit 80f8074d authored by Kamil Trzcińśki's avatar Kamil Trzcińśki
Browse files

Migrate SlackService and HipChat service

parent d5c91bb9
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -24,6 +24,8 @@ class BuildsEmailService < Service
boolean_accessor :notify_only_broken_builds
validates :recipients, presence: true, if: :activated?
 
default_value_for :notify_only_broken_builds, true
def title
'Builds emails'
end
Loading
Loading
Loading
Loading
@@ -25,6 +25,8 @@ class HipchatService < Service
boolean_accessor :notify_only_broken_builds
validates :token, presence: true, if: :activated?
 
default_value_for :notify_only_broken_builds, true
def title
'HipChat'
end
Loading
Loading
Loading
Loading
@@ -23,6 +23,8 @@ class SlackService < Service
boolean_accessor :notify_only_broken_builds
validates :webhook, presence: true, if: :activated?
 
default_value_for :notify_only_broken_builds, true
def title
'Slack'
end
Loading
Loading
Loading
Loading
@@ -2,6 +2,9 @@ class MigrateCiEmails < ActiveRecord::Migration
include Gitlab::Database
 
def up
# This inserts a new service: BuildsEmailService
# It also "manually" constructs the properties (JSON-encoded)
# Migrating all ci_projects e-mail related columns
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}, " \
Loading
Loading
@@ -13,4 +16,7 @@ class MigrateCiEmails < ActiveRecord::Migration
"WHERE ci_services.type = 'Ci::MailService' AND ci_services.active"
)
end
def down
end
end
class MigrateCiSlackService < ActiveRecord::Migration
include Gitlab::Database
def up
properties_query = 'SELECT properties FROM ci_services ' \
'JOIN ci_projects ON ci_services.project_id=ci_projects.id ' \
'WHERE ci_projects.gitlab_id=services.project_id'
active_query = 'SELECT 1 FROM ci_services ' \
'JOIN ci_projects ON ci_services.project_id=ci_projects.id ' \
"WHERE ci_projects.gitlab_id=services.project_id AND ci_services.type='Ci::SlackService' AND ci_services.active"
# We update the service since services are always generated for project, even if they are inactive
# Activate service and migrate properties if currently the service is not active
execute(
"UPDATE services SET properties=(#{properties_query}), build_events=#{true_value}, active=#{true_value} " \
"WHERE NOT services.active AND services.type='SlackService' AND (#{active_query}) IS NOT NULL"
)
# Tick only build_events if the service is already active
execute(
"UPDATE services SET build_events=#{true_value} " \
"WHERE services.active AND services.type='SlackService' AND (#{active_query}) IS NOT NULL"
)
end
def down
end
end
class MigrateCiHipChatService < ActiveRecord::Migration
include Gitlab::Database
def up
# From properties strip `hipchat_` key
properties_query = "SELECT REPLACE(properties, '\"hipchat_', '\"') FROM ci_services " \
'JOIN ci_projects ON ci_services.project_id=ci_projects.id ' \
'WHERE ci_projects.gitlab_id=services.project_id'
active_query = 'SELECT 1 FROM ci_services ' \
'JOIN ci_projects ON ci_services.project_id=ci_projects.id ' \
"WHERE ci_projects.gitlab_id=services.project_id AND ci_services.type='Ci::HipchatService' AND ci_services.active"
# We update the service since services are always generated for project, even if they are inactive
# Activate service and migrate properties if currently the service is not active
execute(
"UPDATE services SET properties=(#{properties_query}), build_events=#{true_value}, active=#{true_value} " \
"WHERE NOT services.active AND services.type='HipchatService' AND (#{active_query}) IS NOT NULL"
)
# Tick only build_events if the service is already active
execute(
"UPDATE services SET build_events=#{true_value} " \
"WHERE services.active AND services.type='HipchatService' AND (#{active_query}) IS NOT NULL"
)
end
def down
end
end
Loading
Loading
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
 
ActiveRecord::Schema.define(version: 20151209145909) do
ActiveRecord::Schema.define(version: 20151210125927) do
 
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment