Class: Gitlab::Memory::ReportsUploader

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/memory/reports_uploader.rb

Instance Method Summary collapse

Constructor Details

#initialize(gcs_key:, gcs_project:, gcs_bucket:, logger:) ⇒ ReportsUploader

Returns a new instance of ReportsUploader.



8
9
10
11
12
# File 'lib/gitlab/memory/reports_uploader.rb', line 8

def initialize(gcs_key:, gcs_project:, gcs_bucket:, logger:)
  @gcs_bucket = gcs_bucket
  @fog = Fog::Storage::Google.new(google_project: gcs_project, google_json_key_location: gcs_key)
  @logger = logger
end

Instance Method Details

#upload(path) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/gitlab/memory/reports_uploader.rb', line 14

def upload(path)
  log_upload_requested(path)
  start_monotonic_time = Gitlab::Metrics::System.monotonic_time

  File.open(path.to_s) { |file| fog.put_object(gcs_bucket, File.basename(path), file) }

  duration_s = Gitlab::Metrics::System.monotonic_time - start_monotonic_time
  log_upload_success(path, duration_s)
rescue StandardError, Errno::ENOENT => error
  log_exception(error)
end