mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-14 15:16:04 +10:00
64 lines
1.9 KiB
Ruby
64 lines
1.9 KiB
Ruby
namespace :ci do
|
|
desc 'GitLab | Import and migrate CI database'
|
|
task migrate: :environment do
|
|
unless ENV['force'] == 'yes'
|
|
puts "This will truncate all CI tables and restore it from provided backup."
|
|
puts "You will lose any previous CI data stored in the database."
|
|
ask_to_continue
|
|
puts ""
|
|
end
|
|
|
|
Rake::Task["ci:migrate:db"].invoke
|
|
Rake::Task["ci:migrate:autoincrements"].invoke
|
|
Rake::Task["ci:migrate:tags"].invoke
|
|
Rake::Task["ci:migrate:services"].invoke
|
|
end
|
|
|
|
namespace :migrate do
|
|
desc 'GitLab | Import CI database'
|
|
task db: :environment do
|
|
if ENV["CI_DUMP"].nil?
|
|
puts "No CI SQL dump specified:"
|
|
puts "rake gitlab:backup:restore CI_DUMP=ci_dump.sql"
|
|
exit 1
|
|
end
|
|
|
|
ci_dump = ENV["CI_DUMP"]
|
|
unless File.exists?(ci_dump)
|
|
puts "The specified sql dump doesn't exist!"
|
|
exit 1
|
|
end
|
|
|
|
::Ci::Migrate::Database.new.restore(ci_dump)
|
|
end
|
|
|
|
desc 'GitLab | Migrate CI tags'
|
|
task tags: :environment do
|
|
::Ci::Migrate::Tags.new.restore
|
|
end
|
|
|
|
desc 'GitLab | Migrate CI auto-increments'
|
|
task autoincrements: :environment do
|
|
c = ActiveRecord::Base.connection
|
|
c.tables.select { |t| t.start_with?('ci_') }.each do |table|
|
|
result = c.select_one("SELECT id FROM #{table} ORDER BY id DESC LIMIT 1")
|
|
if result
|
|
ai_val = result['id'].to_i + 1
|
|
puts "Resetting auto increment ID for #{table} to #{ai_val}"
|
|
if c.adapter_name == 'PostgreSQL'
|
|
c.execute("ALTER SEQUENCE #{table}_id_seq RESTART WITH #{ai_val}")
|
|
else
|
|
c.execute("ALTER TABLE #{table} AUTO_INCREMENT = #{ai_val}")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
desc 'GitLab | Migrate CI services'
|
|
task services: :environment do
|
|
c = ActiveRecord::Base.connection
|
|
c.execute("UPDATE ci_services SET type=CONCAT('Ci::', type) WHERE type NOT LIKE 'Ci::%'")
|
|
end
|
|
end
|
|
end
|