class Publisher::Commands::Upload

Upload allure report

Public Instance Methods

call(**args) click to toggle source
# File lib/allure_report_publisher/commands/upload.rb, line 44
def call(**args)
  Helpers.pastel(force_color: args[:color] || nil)

  validate_args(args)
  validate_result_files(args[:results_glob], args[:ignore_missing_results])

  uploader = uploaders(args[:type]).new(**args.slice(:results_glob, :bucket, :prefix, :copy_latest, :update_pr))

  log("Generating allure report")
  Spinner.spin("generating") { uploader.generate_report }

  log("Uploading allure report to #{args[:type]}")
  Spinner.spin("uploading") { uploader.upload }
  uploader.report_urls.each { |k, v| log("#{k}: #{v}", :green) }
  return unless args[:update_pr] && uploader.pr?

  log("Adding reports urls")
  Spinner.spin("updating", exit_on_error: false) { uploader.add_url_to_pr }
end

Private Instance Methods

uploaders(uploader) click to toggle source

Uploader class

@param [String] uploader @return [Publisher::Uploaders::Uploader]

# File lib/allure_report_publisher/commands/upload.rb, line 70
def uploaders(uploader)
  {
    "s3" => Uploaders::S3,
    "gcs" => Uploaders::GCS
  }[uploader]
end
validate_args(args) click to toggle source

Validate required args

@param [Hash] args @return [void]

# File lib/allure_report_publisher/commands/upload.rb, line 81
def validate_args(args)
  error("Missing argument --results-glob!") unless args[:results_glob]
  error("Missing argument --bucket!") unless args[:bucket]
end
validate_result_files(results_glob, ignore) click to toggle source

Check if allure results present

@param [String] results_glob @return [void]

# File lib/allure_report_publisher/commands/upload.rb, line 90
def validate_result_files(results_glob, ignore)
  return unless Dir.glob(results_glob).empty?

  log("Glob '#{results_glob}' did not match any files!", ignore ? :yellow : :red)
  exit(ignore ? 0 : 1)
end