class Publisher::Uploaders::Uploader

Uploader implementation

Constants

EXECUTOR_JSON
HISTORY

Attributes

bucket_name[R]
copy_latest[R]
prefix[R]
results_glob[R]
update_pr[R]

Public Class Methods

new(results_glob:, bucket:, update_pr: nil, prefix: nil, copy_latest: false) click to toggle source
# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 19
def initialize(results_glob:, bucket:, update_pr: nil, prefix: nil, copy_latest: false)
  @results_glob = results_glob
  @bucket_name = bucket
  @prefix = prefix
  @update_pr = update_pr
  @copy_latest = !!(Providers.provider && copy_latest) # copy latest for ci only
end

Public Instance Methods

add_url_to_pr() click to toggle source

Add allure report url to pull request description

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 56
def add_url_to_pr
  return unless update_pr && ci_provider

  ci_provider.add_report_url
end
execute() click to toggle source

Execute allure report generation and upload

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 30
def execute
  generate_report
  upload
  add_url_to_pr
end
generate_report() click to toggle source

Generate allure report

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 39
def generate_report
  add_history
  add_executor_info

  ReportGenerator.new(results_glob, results_path, report_path).generate
end
pr?() click to toggle source

Executed in PR pipeline

@return [Boolean]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 75
def pr?
  ci_provider&.pr?
end
report_urls() click to toggle source

Uploaded report urls

@return [Hash<String, String>] uploaded report urls

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 65
def report_urls
  urls = { "Report url" => report_url }
  urls["Latest report url"] = latest_report_url if copy_latest

  urls
end
upload() click to toggle source

Upload report to storage provider

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 49
def upload
  run_uploads
end

Private Instance Methods

add_executor_info() click to toggle source

Add CI executor info

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 148
def add_executor_info
  return unless ci_provider

  File.open("#{results_path}/#{EXECUTOR_JSON}", "w") do |file|
    file.write(ci_provider.executor_info.to_json)
  end
end
add_history() click to toggle source

Add allure history

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 138
def add_history
  create_history_dir
  download_history
rescue HistoryNotFoundError
  nil
end
ci_provider() click to toggle source

Get CI provider

@return [Publisher::Providers::Base]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 175
def ci_provider
  return @ci_provider if defined?(@ci_provider)

  @ci_provider = Providers.provider&.new(report_url: report_url, update_pr: update_pr)
end
client() click to toggle source

Cloud provider client

@return [Object]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 88
def client
  raise("Not Implemented!")
end
create_history_dir() click to toggle source

Fetch allure report history

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 184
def create_history_dir
  FileUtils.mkdir_p(path(results_path, "history"))
end
download_history() click to toggle source

Download allure history

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 109
def download_history
  raise("Not implemented!")
end
full_prefix() click to toggle source

Report path prefix

@return [String]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 191
def full_prefix
  @full_prefix ||= [prefix, run_id].compact.yield_self do |pre|
    break if pre.empty?

    pre.join("/")
  end
end
latest_report_url() click to toggle source

Latest report url

@return [String]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 102
def latest_report_url
  raise("Not Implemented!")
end
report_files() click to toggle source

Report files

@return [Array<Pathname>]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 216
def report_files
  @report_files ||= Pathname
                    .glob("#{report_path}/**/*")
                    .reject(&:directory?)
end
report_path() click to toggle source

Allure report directory

@return [String]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 209
def report_path
  @report_path ||= Dir.mktmpdir("allure-report")
end
report_url() click to toggle source

Report url

@return [String]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 95
def report_url
  raise("Not Implemented!")
end
results_path() click to toggle source

Aggregated results directory

@return [String]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 202
def results_path
  @results_path ||= Dir.mktmpdir("allure-results")
end
run_id() click to toggle source

Get run id

@return [String]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 168
def run_id
  @run_id ||= Providers.provider&.run_id
end
run_uploads() click to toggle source

Run upload commands

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 159
def run_uploads
  upload_history unless !run_id || copy_latest
  upload_report
  upload_latest_copy if copy_latest
end
upload_history() click to toggle source

Upload history to s3

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 116
def upload_history
  raise("Not implemented!")
end
upload_latest_copy() click to toggle source

Upload copy of latest run

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 130
def upload_latest_copy
  raise("Not implemented!")
end
upload_report() click to toggle source

Upload report to s3

@return [void]

# File lib/allure_report_publisher/lib/uploaders/_uploader.rb, line 123
def upload_report
  raise("Not implemented!")
end