mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-10 21:26:07 +10:00
Fix restore warning message
## What does this MR do?
Fix the restore Rake task so it properly outputs the database warning. This is a pretty important warning and it was not even being output. After this fix, the output looks like the screenshot below.

See merge request !4980
(cherry picked from commit 0144dce7ee)
218 lines
6.8 KiB
Ruby
218 lines
6.8 KiB
Ruby
require 'active_record/fixtures'
|
|
|
|
namespace :gitlab do
|
|
namespace :backup do
|
|
# Create backup of GitLab system
|
|
desc "GitLab | Create a backup of the GitLab system"
|
|
task create: :environment do
|
|
warn_user_is_not_gitlab
|
|
configure_cron_mode
|
|
|
|
Rake::Task["gitlab:backup:db:create"].invoke
|
|
Rake::Task["gitlab:backup:repo:create"].invoke
|
|
Rake::Task["gitlab:backup:uploads:create"].invoke
|
|
Rake::Task["gitlab:backup:builds:create"].invoke
|
|
Rake::Task["gitlab:backup:artifacts:create"].invoke
|
|
Rake::Task["gitlab:backup:lfs:create"].invoke
|
|
Rake::Task["gitlab:backup:registry:create"].invoke
|
|
|
|
backup = Backup::Manager.new
|
|
backup.pack
|
|
backup.cleanup
|
|
backup.remove_old
|
|
end
|
|
|
|
# Restore backup of GitLab system
|
|
desc 'GitLab | Restore a previously created backup'
|
|
task restore: :environment do
|
|
warn_user_is_not_gitlab
|
|
configure_cron_mode
|
|
|
|
backup = Backup::Manager.new
|
|
backup.unpack
|
|
|
|
unless backup.skipped?('db')
|
|
unless ENV['force'] == 'yes'
|
|
warning = <<-MSG.strip_heredoc
|
|
Before restoring the database we recommend removing all existing
|
|
tables to avoid future upgrade problems. Be aware that if you have
|
|
custom tables in the GitLab database these tables and all data will be
|
|
removed.
|
|
MSG
|
|
puts warning.color(:red)
|
|
ask_to_continue
|
|
puts 'Removing all tables. Press `Ctrl-C` within 5 seconds to abort'.color(:yellow)
|
|
sleep(5)
|
|
end
|
|
# Drop all tables Load the schema to ensure we don't have any newer tables
|
|
# hanging out from a failed upgrade
|
|
$progress.puts 'Cleaning the database ... '.color(:blue)
|
|
Rake::Task['gitlab:db:drop_tables'].invoke
|
|
$progress.puts 'done'.color(:green)
|
|
Rake::Task['gitlab:backup:db:restore'].invoke
|
|
end
|
|
Rake::Task['gitlab:backup:repo:restore'].invoke unless backup.skipped?('repositories')
|
|
Rake::Task['gitlab:backup:uploads:restore'].invoke unless backup.skipped?('uploads')
|
|
Rake::Task['gitlab:backup:builds:restore'].invoke unless backup.skipped?('builds')
|
|
Rake::Task['gitlab:backup:artifacts:restore'].invoke unless backup.skipped?('artifacts')
|
|
Rake::Task['gitlab:backup:lfs:restore'].invoke unless backup.skipped?('lfs')
|
|
Rake::Task['gitlab:backup:registry:restore'].invoke unless backup.skipped?('registry')
|
|
Rake::Task['gitlab:shell:setup'].invoke
|
|
|
|
backup.cleanup
|
|
end
|
|
|
|
namespace :repo do
|
|
task create: :environment do
|
|
$progress.puts "Dumping repositories ...".color(:blue)
|
|
|
|
if ENV["SKIP"] && ENV["SKIP"].include?("repositories")
|
|
$progress.puts "[SKIPPED]".color(:cyan)
|
|
else
|
|
Backup::Repository.new.dump
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
task restore: :environment do
|
|
$progress.puts "Restoring repositories ...".color(:blue)
|
|
Backup::Repository.new.restore
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
namespace :db do
|
|
task create: :environment do
|
|
$progress.puts "Dumping database ... ".color(:blue)
|
|
|
|
if ENV["SKIP"] && ENV["SKIP"].include?("db")
|
|
$progress.puts "[SKIPPED]".color(:cyan)
|
|
else
|
|
Backup::Database.new.dump
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
task restore: :environment do
|
|
$progress.puts "Restoring database ... ".color(:blue)
|
|
Backup::Database.new.restore
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
namespace :builds do
|
|
task create: :environment do
|
|
$progress.puts "Dumping builds ... ".color(:blue)
|
|
|
|
if ENV["SKIP"] && ENV["SKIP"].include?("builds")
|
|
$progress.puts "[SKIPPED]".color(:cyan)
|
|
else
|
|
Backup::Builds.new.dump
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
task restore: :environment do
|
|
$progress.puts "Restoring builds ... ".color(:blue)
|
|
Backup::Builds.new.restore
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
namespace :uploads do
|
|
task create: :environment do
|
|
$progress.puts "Dumping uploads ... ".color(:blue)
|
|
|
|
if ENV["SKIP"] && ENV["SKIP"].include?("uploads")
|
|
$progress.puts "[SKIPPED]".color(:cyan)
|
|
else
|
|
Backup::Uploads.new.dump
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
task restore: :environment do
|
|
$progress.puts "Restoring uploads ... ".color(:blue)
|
|
Backup::Uploads.new.restore
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
namespace :artifacts do
|
|
task create: :environment do
|
|
$progress.puts "Dumping artifacts ... ".color(:blue)
|
|
|
|
if ENV["SKIP"] && ENV["SKIP"].include?("artifacts")
|
|
$progress.puts "[SKIPPED]".color(:cyan)
|
|
else
|
|
Backup::Artifacts.new.dump
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
task restore: :environment do
|
|
$progress.puts "Restoring artifacts ... ".color(:blue)
|
|
Backup::Artifacts.new.restore
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
namespace :lfs do
|
|
task create: :environment do
|
|
$progress.puts "Dumping lfs objects ... ".color(:blue)
|
|
|
|
if ENV["SKIP"] && ENV["SKIP"].include?("lfs")
|
|
$progress.puts "[SKIPPED]".color(:cyan)
|
|
else
|
|
Backup::Lfs.new.dump
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
task restore: :environment do
|
|
$progress.puts "Restoring lfs objects ... ".color(:blue)
|
|
Backup::Lfs.new.restore
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
end
|
|
|
|
namespace :registry do
|
|
task create: :environment do
|
|
$progress.puts "Dumping container registry images ... ".color(:blue)
|
|
|
|
if Gitlab.config.registry.enabled
|
|
if ENV["SKIP"] && ENV["SKIP"].include?("registry")
|
|
$progress.puts "[SKIPPED]".color(:cyan)
|
|
else
|
|
Backup::Registry.new.dump
|
|
$progress.puts "done".color(:green)
|
|
end
|
|
else
|
|
$progress.puts "[DISABLED]".color(:cyan)
|
|
end
|
|
end
|
|
|
|
task restore: :environment do
|
|
$progress.puts "Restoring container registry images ... ".color(:blue)
|
|
if Gitlab.config.registry.enabled
|
|
Backup::Registry.new.restore
|
|
$progress.puts "done".color(:green)
|
|
else
|
|
$progress.puts "[DISABLED]".color(:cyan)
|
|
end
|
|
end
|
|
end
|
|
|
|
def configure_cron_mode
|
|
if ENV['CRON']
|
|
# We need an object we can say 'puts' and 'print' to; let's use a
|
|
# StringIO.
|
|
require 'stringio'
|
|
$progress = StringIO.new
|
|
else
|
|
$progress = $stdout
|
|
end
|
|
end
|
|
end # namespace end: backup
|
|
end # namespace end: gitlab
|