gitlab-org--gitlab-foss/lib/gitlab/background_migration/copy_ci_builds_columns_to_s...

45 lines
1.3 KiB
Ruby

# frozen_string_literal: true
# rubocop:disable Style/Documentation
module Gitlab
module BackgroundMigration
class CopyCiBuildsColumnsToSecurityScans
extend ::Gitlab::Utils::Override
UPDATE_BATCH_SIZE = 500
def perform(start_id, stop_id)
(start_id..stop_id).step(UPDATE_BATCH_SIZE).each do |offset|
batch_start = offset
batch_stop = offset + UPDATE_BATCH_SIZE - 1
ActiveRecord::Base.connection.execute <<~SQL
UPDATE
security_scans
SET
project_id = ci_builds.project_id,
pipeline_id = ci_builds.commit_id
FROM ci_builds
WHERE ci_builds.type='Ci::Build'
AND ci_builds.id=security_scans.build_id
AND security_scans.id BETWEEN #{Integer(batch_start)} AND #{Integer(batch_stop)}
SQL
end
mark_job_as_succeeded(start_id, stop_id)
rescue StandardError => error
Gitlab::ErrorTracking.track_and_raise_for_dev_exception(error)
end
private
def mark_job_as_succeeded(*arguments)
Gitlab::Database::BackgroundMigrationJob.mark_all_as_succeeded(
'CopyCiBuildsColumnsToSecurityScans',
arguments
)
end
end
end
end