Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tasks/gitlab/pages.rake')
-rw-r--r--lib/tasks/gitlab/pages.rake35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/tasks/gitlab/pages.rake b/lib/tasks/gitlab/pages.rake
new file mode 100644
index 00000000000..e15cbb4e32e
--- /dev/null
+++ b/lib/tasks/gitlab/pages.rake
@@ -0,0 +1,35 @@
+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