class Fastlane::Actions::UploadSymbolsToSentryAction

Public Class Methods

authors() click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 128
def self.authors
  ["joshdholtz"]
end
available_options() click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 79
def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :api_host,
                                 env_name: "SENTRY_HOST",
                                 description: "API host url for Sentry",
                                 default_value: "https://app.getsentry.com/api/0",
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :api_key,
                                 env_name: "SENTRY_API_KEY",
                                 description: "API key for Sentry",
                                 sensitive: true,
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :auth_token,
                                 env_name: "SENTRY_AUTH_TOKEN",
                                 description: "Authentication token for Sentry",
                                 sensitive: true,
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :org_slug,
                                 env_name: "SENTRY_ORG_SLUG",
                                 description: "Organization slug for Sentry project",
                                 verify_block: proc do |value|
                                   UI.user_error!("No organization slug for SentryAction given, pass using `org_slug: 'org'`") unless value && !value.empty?
                                 end),
    FastlaneCore::ConfigItem.new(key: :project_slug,
                                 env_name: "SENTRY_PROJECT_SLUG",
                                 description: "Project slug for Sentry",
                                 verify_block: proc do |value|
                                   UI.user_error!("No project slug for SentryAction given, pass using `project_slug: 'project'`") unless value && !value.empty?
                                 end),
    FastlaneCore::ConfigItem.new(key: :dsym_path,
                                 env_name: "SENTRY_DSYM_PATH",
                                 description: "Path to your symbols file. For iOS and Mac provide path to app.dSYM.zip",
                                 default_value: Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH],
                                 default_value_dynamic: true,
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :dsym_paths,
                                 env_name: "SENTRY_DSYM_PATHS",
                                 description: "Path to an array of your symbols file. For iOS and Mac provide path to app.dSYM.zip",
                                 default_value: Actions.lane_context[SharedValues::DSYM_PATHS],
                                 default_value_dynamic: true,
                                 type: Array,
                                 optional: true)
  ]
end
category() click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 147
def self.category
  :deprecated
end
deprecated_notes() click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 151
def self.deprecated_notes
  [
    "Please use the `sentry` plugin instead.",
    "Install using `fastlane add_plugin sentry`.",
    "Replace `upload_symbols_to_sentry(...)` with `sentry_upload_dsym(...)`."
  ].join("\n")
end
description() click to toggle source

@!group Documentation

# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 71
def self.description
  "Upload dSYM symbolication files to Sentry"
end
details() click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 75
def self.details
  "This action allows you to upload symbolication files to Sentry. It's extra useful if you use it to download the latest dSYM files from Apple when you use Bitcode."
end
example_code() click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 136
def self.example_code
  [
    'upload_symbols_to_sentry(
      auth_token: "...",
      org_slug: "...",
      project_slug: "...",
      dsym_path: "./App.dSYM.zip"
    )'
  ]
end
is_supported?(platform) click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 132
def self.is_supported?(platform)
  platform == :ios
end
return_value() click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 124
def self.return_value
  "The uploaded dSYM path(s)"
end
run(params) click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 4
def self.run(params)
  # Warning about using new plugin
  UI.important("It's recommended to use the official Sentry Fastlane plugin")
  UI.important("GitHub: https://github.com/getsentry/fastlane-plugin-sentry")
  UI.important("Installation: fastlane add_plugin sentry")

  UI.user_error!("This plugin is now completely deprecated")
  # the code below doesn't run anymore
  # Actions.verify_gem!('rest-client')
  # require 'rest-client'

  # Params - API
  host = params[:api_host]
  api_key = params[:api_key]
  auth_token = params[:auth_token]
  org = params[:org_slug]
  project = params[:project_slug]

  # Params - dSYM
  dsym_path = params[:dsym_path]
  dsym_paths = params[:dsym_paths] || []

  has_api_key = !api_key.to_s.empty?
  has_auth_token = !auth_token.to_s.empty?

  # Will fail if none or both authentication methods are provided
  if !has_api_key && !has_auth_token
    UI.user_error!("No API key or authentication token found for SentryAction given, pass using `api_key: 'key'` or `auth_token: 'token'`")
  elsif has_api_key && has_auth_token
    UI.user_error!("Both API key and authentication token found for SentryAction given, please only give one")
  end

  # Url to post dSYMs to
  url = "#{host}/projects/#{org}/#{project}/files/dsyms/"

  if has_api_key
    resource = RestClient::Resource.new(url, api_key, '')
  else
    resource = RestClient::Resource.new(url, headers: { Authorization: "Bearer #{auth_token}" })
  end

  UI.message("Will upload dSYM(s) to #{url}")

  # Upload dsym(s)
  dsym_paths += [dsym_path]
  uploaded_paths = dsym_paths.compact.map do |dsym|
    upload_dsym(resource, dsym)
  end

  # Return uploaded dSYM paths
  uploaded_paths
end
upload_dsym(resource, dsym) click to toggle source
# File fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb, line 57
def self.upload_dsym(resource, dsym)
  UI.message("Uploading... #{dsym}")
  resource.post(file: File.new(dsym, 'rb')) unless Helper.test?
  UI.success('dSYM successfully uploaded to Sentry!')

  dsym
rescue
  UI.user_error!('Error while trying to upload dSYM to Sentry')
end