Full send Sentry (#2018)

* Update build profiles, sentry config

* Enable sentry

* Ok actually enable in dev

* Remove debug

* Add TF build

* Fix typo

* Remove debug

* Remove unecessary config

* Fix typo

* Set env in Expo

* Remove scripts

* Clarify

* Replace invalid character

* Align on release/dist

* Add build version

* Just use package version

* Align dist
zio/stable
Eric Bailey 2023-11-28 21:49:37 -06:00 committed by GitHub
parent b778017000
commit 6f7032d42b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 86 additions and 35 deletions

View File

@ -1,12 +1,41 @@
const pkg = require('./package.json')
module.exports = function () { module.exports = function () {
const hasSentryToken = !!process.env.SENTRY_AUTH_TOKEN /**
* App version number. Should be incremented as part of a release cycle.
*/
const VERSION = pkg.version
/**
* iOS build number. Must be incremented for each TestFlight version.
*/
const IOS_BUILD_NUMBER = '4'
/**
* Android build number. Must be incremented for each release.
*/
const ANDROID_VERSION_CODE = 46
/**
* Uses built-in Expo env vars
*
* @see https://docs.expo.dev/build-reference/variables/#built-in-environment-variables
*/
const PLATFORM = process.env.EAS_BUILD_PLATFORM
/**
* Additional granularity for the `dist` field
*/
const DIST_BUILD_NUMBER =
PLATFORM === 'android' ? ANDROID_VERSION_CODE : IOS_BUILD_NUMBER
return { return {
expo: { expo: {
version: VERSION,
name: 'Bluesky', name: 'Bluesky',
slug: 'bluesky', slug: 'bluesky',
scheme: 'bluesky', scheme: 'bluesky',
owner: 'blueskysocial', owner: 'blueskysocial',
version: '1.57.0',
runtimeVersion: { runtimeVersion: {
policy: 'appVersion', policy: 'appVersion',
}, },
@ -19,7 +48,7 @@ module.exports = function () {
backgroundColor: '#ffffff', backgroundColor: '#ffffff',
}, },
ios: { ios: {
buildNumber: '4', buildNumber: IOS_BUILD_NUMBER,
supportsTablet: false, supportsTablet: false,
bundleIdentifier: 'xyz.blueskyweb.app', bundleIdentifier: 'xyz.blueskyweb.app',
config: { config: {
@ -43,7 +72,7 @@ module.exports = function () {
backgroundColor: '#ffffff', backgroundColor: '#ffffff',
}, },
android: { android: {
versionCode: 46, versionCode: ANDROID_VERSION_CODE,
adaptiveIcon: { adaptiveIcon: {
foregroundImage: './assets/adaptive-icon.png', foregroundImage: './assets/adaptive-icon.png',
backgroundColor: '#ffffff', backgroundColor: '#ffffff',
@ -74,7 +103,7 @@ module.exports = function () {
}, },
plugins: [ plugins: [
'expo-localization', 'expo-localization',
hasSentryToken && 'sentry-expo', Boolean(process.env.SENTRY_AUTH_TOKEN) && 'sentry-expo',
[ [
'expo-build-properties', 'expo-build-properties',
{ {
@ -100,11 +129,16 @@ module.exports = function () {
}, },
hooks: { hooks: {
postPublish: [ postPublish: [
/*
* @see https://docs.expo.dev/guides/using-sentry/#app-configuration
*/
{ {
file: 'sentry-expo/upload-sourcemaps', file: 'sentry-expo/upload-sourcemaps',
config: { config: {
organization: 'blueskyweb', organization: 'blueskyweb',
project: 'react-native', project: 'react-native',
release: VERSION,
dist: `${PLATFORM}.${VERSION}.${DIST_BUILD_NUMBER}`,
}, },
}, },
], ],

View File

@ -11,28 +11,19 @@
"extends": "base", "extends": "base",
"developmentClient": true, "developmentClient": true,
"distribution": "internal", "distribution": "internal",
"channel": "development",
"ios": { "ios": {
"simulator": true, "simulator": true,
"resourceClass": "large" "resourceClass": "large"
}, }
"channel": "development"
},
"development-device": {
"extends": "base",
"developmentClient": true,
"distribution": "internal",
"ios": {
"resourceClass": "large"
},
"channel": "development"
}, },
"preview": { "preview": {
"extends": "base", "extends": "base",
"distribution": "internal", "distribution": "internal",
"channel": "preview",
"ios": { "ios": {
"resourceClass": "large" "resourceClass": "large"
}, }
"channel": "preview"
}, },
"production": { "production": {
"extends": "base", "extends": "base",
@ -40,14 +31,6 @@
"resourceClass": "large" "resourceClass": "large"
}, },
"channel": "production" "channel": "production"
},
"dev-android-apk": {
"extends": "base",
"developmentClient": true,
"android": {
"buildType": "apk",
"gradleCommand": ":app:assembleRelease"
}
} }
}, },
"submit": { "submit": {

View File

@ -28,7 +28,6 @@
"perf:test:measure": "NODE_ENV=test flashlight test --bundleId xyz.blueskyweb.app --testCommand 'yarn perf:test' --duration 150000 --resultsFilePath .perf/results.json", "perf:test:measure": "NODE_ENV=test flashlight test --bundleId xyz.blueskyweb.app --testCommand 'yarn perf:test' --duration 150000 --resultsFilePath .perf/results.json",
"perf:test:results": "NODE_ENV=test flashlight report .perf/results.json", "perf:test:results": "NODE_ENV=test flashlight report .perf/results.json",
"perf:measure": "NODE_ENV=test flashlight measure", "perf:measure": "NODE_ENV=test flashlight measure",
"build:apk": "eas build -p android --profile dev-android-apk",
"intl:extract": "lingui extract", "intl:extract": "lingui extract",
"intl:compile": "lingui compile" "intl:compile": "lingui compile"
}, },

View File

@ -1,8 +1,46 @@
/**
* Importing these separately from `platform/detection` and `lib/app-info` to
* avoid future conflicts and/or circular deps
*/
import {Platform} from 'react-native'
import app from 'react-native-version-number'
import * as info from 'expo-updates'
import {init} from 'sentry-expo' import {init} from 'sentry-expo'
/**
* Matches the build profile `channel` props in `eas.json`
*/
const buildChannel = (info.channel || 'development') as
| 'development'
| 'preview'
| 'production'
/**
* Examples:
* - `dev`
* - `1.57.0`
*/
const release = app.appVersion ?? 'dev'
/**
* Examples:
* - `web.dev`
* - `ios.dev`
* - `android.dev`
* - `web.1.57.0`
* - `ios.1.57.0.3`
* - `android.1.57.0.46`
*/
const dist = `${Platform.OS}.${release}${
app.buildVersion ? `.${app.buildVersion}` : ''
}`
init({ init({
dsn: 'https://05bc3789bf994b81bd7ce20c86ccd3ae@o4505071687041024.ingest.sentry.io/4505071690514432', dsn: 'https://05bc3789bf994b81bd7ce20c86ccd3ae@o4505071687041024.ingest.sentry.io/4505071690514432',
enableInExpoDevelopment: false, // if true, Sentry will try to send events/errors in development mode.
debug: false, // If `true`, Sentry will try to print out useful debugging information if something goes wrong with sending the event. Set it to `false` in production debug: false, // If `true`, Sentry will try to print out useful debugging information if something goes wrong with sending the event. Set it to `false` in production
environment: __DEV__ ? 'development' : 'production', // Set the environment enableInExpoDevelopment: true,
environment: buildChannel,
dist,
release,
}) })

View File

@ -288,16 +288,13 @@ export class Logger {
*/ */
export const logger = new Logger() export const logger = new Logger()
/**
* Report to console in dev, Sentry in prod, nothing in test.
*/
if (env.IS_DEV && !env.IS_TEST) { if (env.IS_DEV && !env.IS_TEST) {
logger.addTransport(consoleTransport) logger.addTransport(consoleTransport)
/** /**
* Uncomment this to test Sentry in dev * Comment this out to disable Sentry transport in dev
*/ */
// logger.addTransport(sentryTransport); logger.addTransport(sentryTransport)
} else if (env.IS_PROD) { } else if (env.IS_PROD) {
// logger.addTransport(sentryTransport) logger.addTransport(sentryTransport)
} }