35 lines
1.3 KiB
Ruby
35 lines
1.3 KiB
Ruby
require 'logger'
|
|
|
|
namespace :gitlab do
|
|
namespace :pages do
|
|
desc "GitLab | Pages | Migrate legacy storage to zip format"
|
|
task migrate_legacy_storage: :gitlab_environment do
|
|
logger = Logger.new(STDOUT)
|
|
logger.info('Starting to migrate legacy pages storage to zip deployments')
|
|
processed_projects = 0
|
|
|
|
ProjectPagesMetadatum.only_on_legacy_storage.each_batch(of: 10) do |batch|
|
|
batch.preload(project: [:namespace, :route, pages_metadatum: :pages_deployment]).each do |metadatum|
|
|
project = metadatum.project
|
|
|
|
result = nil
|
|
time = Benchmark.realtime do
|
|
result = ::Pages::MigrateLegacyStorageToDeploymentService.new(project).execute
|
|
end
|
|
processed_projects += 1
|
|
|
|
if result[:status] == :success
|
|
logger.info("project_id: #{project.id} #{project.pages_path} has been migrated in #{time} seconds")
|
|
else
|
|
logger.error("project_id: #{project.id} #{project.pages_path} failed to be migrated in #{time} seconds: #{result[:message]}")
|
|
end
|
|
rescue => e
|
|
logger.error("#{e.message} project_id: #{project&.id}")
|
|
Gitlab::ErrorTracking.track_exception(e, project_id: project&.id)
|
|
end
|
|
|
|
logger.info("#{processed_projects} pages projects are processed")
|
|
end
|
|
end
|
|
end
|
|
end
|