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

copy_ci_builds_columns_to_security_scans.rb « background_migration « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 107ac9b0c3b454e4927dbfbdde28567ba621a708 (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
36
37
38
39
40
41
42
43
44
# 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