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

pages.rake « gitlab « tasks « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e15cbb4e32ec634db3e1fe0e6ec8bbe015f2f437 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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