diff options
Diffstat (limited to 'lib/tasks/gitlab/dependency_proxy/migrate.rake')
-rw-r--r-- | lib/tasks/gitlab/dependency_proxy/migrate.rake | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/tasks/gitlab/dependency_proxy/migrate.rake b/lib/tasks/gitlab/dependency_proxy/migrate.rake new file mode 100644 index 00000000000..fa35eacc59d --- /dev/null +++ b/lib/tasks/gitlab/dependency_proxy/migrate.rake @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'logger' + +desc "GitLab | Dependency Proxy | Migrate dependency proxy files to remote storage" +namespace :gitlab do + namespace :dependency_proxy do + task migrate: :environment do + logger = Logger.new($stdout) + logger.info('Starting transfer of dependency proxy files to object storage') + + unless ::DependencyProxy::FileUploader.object_store_enabled? + raise 'Object store is disabled for dependency proxy feature' + end + + ::DependencyProxy::Blob.with_files_stored_locally.find_each(batch_size: 10) do |blob_file| + blob_file.file.migrate!(::DependencyProxy::FileUploader::Store::REMOTE) + + logger.info("Transferred dependency proxy blob file #{blob_file.id} of size #{blob_file.size.to_i.bytes} to object storage") + rescue StandardError => e + logger.error("Failed to transfer dependency proxy blob file #{blob_file.id} with error: #{e.message}") + end + + ::DependencyProxy::Manifest.with_files_stored_locally.find_each(batch_size: 10) do |manifest_file| + manifest_file.file.migrate!(::DependencyProxy::FileUploader::Store::REMOTE) + + logger.info("Transferred dependency proxy manifest file #{manifest_file.id} of size #{manifest_file.size.to_i.bytes} to object storage") + rescue StandardError => e + logger.error("Failed to transfer dependency proxy manifest file #{manifest_file.id} with error: #{e.message}") + end + end + end +end |