Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Fabric Crashlytics with Sentry #1376

Merged
merged 10 commits into from
Mar 24, 2020
Merged

Replace Fabric Crashlytics with Sentry #1376

merged 10 commits into from
Mar 24, 2020

Commits on Mar 23, 2020

  1. Remove Fabric and Crashlytics

    The Logger now logs to `console.log` exclusively.
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    8a246eb View commit details
    Browse the repository at this point in the history
  2. Add Sentry reporting

    Errors are reported using `captureException`, and non-errors are added
    as breadcrumbs. This means the non-error events won't be directly sent
    to Sentry, but they will be included as context for any errors that do
    occur.
    
    The sentry configuration is mainly in the `sentry.debug.properties`
    file. The only config outside of that file is the DSN used for
    reporting errors, which is hard-coded in the `setupSentry.js` module.
    
    There are three separate sets of config: default, debug, and release.
    The default config is missing the auth token, so it can't be used to
    publish source maps. However, builds that use the default config will
    still correctly report errors to the `test-metamask-mobile` Sentry
    project.
    
    The debug config is identical to the default config except that it
    includes the auth token. The debug config is for publishing any
    non-production builds (e.g. testing, pre-releases).
    
    The release configuration is to be used for production builds only.
    This is the only config that sends errors to the `metemask-mobile`
    Sentry project.
    
    The debug and release config files have not been added to the repo.
    They are automatically instantiated from the example files if the
    `MM_SENTRY_AUTH_TOKEN` environment variable is set. Setting this
    environment variable in CI should allow publishing from CI.
    
    Closes #1321
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    03f1c5a View commit details
    Browse the repository at this point in the history
  3. Use absolute path for Sentry file

    The SENTRY_PROPERTIES environment variable is used at different
    directory levels in the Android and iOS builds respectively; it's
    used one level down with iOS, but two levels down for Android. This
    means the properties path used is incorrect on iOS at the moment.
    
    Instead an absolute path is now used, to prevent any such errors in the
    future.
    
    The error message for the missing auth token has been improved as well.
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    2110ec8 View commit details
    Browse the repository at this point in the history
  4. Improve handling of missing auth token

    The properties file is now checked to ensure the auth token is present,
    so the build can fail early rather than partway through.
    
    The logic for handling the auth token has been moved to a separate
    function as well, so it can be shared between the release and
    prerelease builds.
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    7545723 View commit details
    Browse the repository at this point in the history
  5. Force setting METAMASK_ENVIRONMENT explicitly for release builds

    The Sentry environment is set to `local` by default (e.g. for dev
    builds), but the build script now requires it to be explicitly set for
    release builds. This is to ensure it isn't missed in the production
    builds, which are done manually.
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    f794c24 View commit details
    Browse the repository at this point in the history
  6. Ensure only Errors are thrown/rejected

    Whenever using the `throw` keyword or calling `reject` in a Promise,
    the value passed should be an Error. Various tools expect thrown
    "errors" to be errors; this is the convention. Using Error types is
    also more useful for debugging, as they have stack traces.
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    1a36656 View commit details
    Browse the repository at this point in the history
  7. Update Logger.error function signature

    `Logger.error` now expects an actual error object as the first
    argument. This allows us to submit proper Errors with stack traces to
    Sentry. The second parameter is an optional set of extra data, which
    gets attached to the Error and is viewable on Sentry in the "Additional
    Data" section of the error report.
    
    Unfortunately any messages added to contextualize errors had to be
    submitted as extra data instead of as a wrapper Error. Wrapper error
    types provide for a richer debugging experience in general, because
    you get additional context for the error plus an additional stack trace
    to help trace the flow of the error. Sentry even has an Integration
    meant to facilitate this pattern, the `LinkedErrors` integration.
    But unfortunately that integration doesn't seem to work with React
    Native, so that option was off the table.
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    780967e View commit details
    Browse the repository at this point in the history
  8. Update @sentry packages to latest

    The most recent Sentry packages have better support for capturing
    native crashes on Android. I had held off on this update at first
    beceause I thought it required React Native >= 0.60, but apparently
    not. It still works on 0.59, just not as well (no sourcemaps)
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    ef92a98 View commit details
    Browse the repository at this point in the history
  9. Fix bug with build script

    It was expecting an alphabetical key instead of an alphanumeric one.
    Gudahtt committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    e16061c View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2020

  1. Configuration menu
    Copy the full SHA
    f6a6c1d View commit details
    Browse the repository at this point in the history