gitlab-org--gitlab-foss/lib/tasks/gitlab/backup.rake

137 lines
3.5 KiB
Ruby

# frozen_string_literal: true
require 'active_record/fixtures'
namespace :gitlab do
namespace :backup do
# Create backup of GitLab system
desc 'GitLab | Backup | Create a backup of the GitLab system'
task create: :gitlab_environment do
warn_user_is_not_gitlab
Backup::Manager.new(progress).create
end
# Restore backup of GitLab system
desc 'GitLab | Backup | Restore a previously created backup'
task restore: :gitlab_environment do
warn_user_is_not_gitlab
Backup::Manager.new(progress).restore
end
namespace :repo do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('repositories')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('repositories')
end
end
namespace :db do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('db')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('db')
end
end
namespace :builds do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('builds')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('builds')
end
end
namespace :uploads do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('uploads')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('uploads')
end
end
namespace :artifacts do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('artifacts')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('artifacts')
end
end
namespace :pages do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('pages')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('pages')
end
end
namespace :lfs do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('lfs')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('lfs')
end
end
namespace :terraform_state do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('terraform_state')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('terraform_state')
end
end
namespace :registry do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('registry')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('registry')
end
end
namespace :packages do
task create: :gitlab_environment do
Backup::Manager.new(progress).run_create_task('packages')
end
task restore: :gitlab_environment do
Backup::Manager.new(progress).run_restore_task('packages')
end
end
def progress
if ENV['CRON']
# We need an object we can say 'puts' and 'print' to; let's use a
# StringIO.
require 'stringio'
StringIO.new
else
$stdout
end
end
end
# namespace end: backup
end
# namespace end: gitlab