Migrate SlackService and HipChat service
This commit is contained in:
parent
d5c91bb9a6
commit
80f8074d01
7 changed files with 72 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}, " \
|
||||
|
@ -13,4 +16,7 @@ class MigrateCiEmails < ActiveRecord::Migration
|
|||
"WHERE ci_services.type = 'Ci::MailService' AND ci_services.active"
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
end
|
||||
end
|
||||
|
|
29
db/migrate/20151210125232_migrate_ci_slack_service.rb
Normal file
29
db/migrate/20151210125232_migrate_ci_slack_service.rb
Normal file
|
@ -0,0 +1,29 @@
|
|||
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
|
30
db/migrate/20151210125927_migrate_ci_hip_chat_service.rb
Normal file
30
db/migrate/20151210125927_migrate_ci_hip_chat_service.rb
Normal file
|
@ -0,0 +1,30 @@
|
|||
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
|
|
@ -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…
Reference in a new issue