TLTR: Добавьте этот файл в корневую папку
Мы классные люди, поэтому у нас есть наша система непрерывного развертывания и наш трекер ошибок, но когда приходят ошибки, мы видим, что они действительно сосут …
Мы забыли очень Важный последний шаг, генерируя и загружающие наши карты источников JavaScript в наш трекер ошибок, в данном случае Bugsnag. Без этих исходных карт у Bugsnag есть только мини -файл JavaScript, который дает нам очень бесполезные ошибки.
У Bugsnag есть хороший Приличная документация, которая показывает нам, как генерировать и загружать исходные карты. Короче говоря, мы должны создать пакет для iOS и Android и загрузить их отдельно.
# 1. Generate **Android** source maps npx react-native bundle \ --platform android \ --dev false \ --entry-file index.js \ --bundle-output release.bundle \ --sourcemap-output release.bundle.map # 2. Upload **Android** source maps to Bugsnag curl --http1.1 https://upload.bugsnag.com/react-native-source-map \ -F apiKey=YOUR_API_KEY \ -F echo appVersionCode YOUR_APP_VERSION_CODE \ -F dev=false \ -F platform=android\ -F sourceMap=@release.bundle.map \ -F bundle=@release.bundle \ -F projectRoot=`pwd` # 3. Generate **iOS** source maps npx react-native bundle \ --platform ios \ --dev false \ --entry-file index.js \ --bundle-output release.bundle \ --sourcemap-output release.bundle.map # 4. Upload **iOS** source maps to Bugsnag curl --http1.1 https://upload.bugsnag.com/react-native-source-map \ -F apiKey=YOUR_API_KEY \ -F echo appBundleVersion YOUR_APP_BUNDLE_VERSION \ -F dev=false \ -F platform=ios\ -F sourceMap=@release.bundle.map \ -F bundle=@release.bundle \ -F projectRoot=`pwd`
Вы можете проверить исходные карты, которые вы загрузили на «Настройки проекта — управление JavaScript Source Maps ‘
Тада! 🎉 Мы начнем видеть нашу ошибку с гораздо лучшим следом.
Это хорошо, но нам нужно сделать это в каждом релизе. Ручная и повторная работа … звучит идеально, чтобы быть включенным в нашу систему CI. В этом случае мы используем App Center, чтобы мы могли использовать сценарии сборки, именно Сценарий пост-сборки , чтобы управлять этим.
Мы должны сохранить Appcenter-post-build.sh
Файл в нашем репо, так что он будет одинаковым как для Android, так и для iOS, и потому что мы должны выполнять разные шаги в зависимости от платформы, Нам нужен способ узнать, на какой платформе мы запускаем сценарий . Я не нашел элегантного способа сделать это, поэтому я просто проверяю, является ли переменная Appcenter_android_variant
существует, чтобы знать, находимся ли мы на Android или нет.
if [ -n "$APPCENTER_ANDROID_VARIANT" ]; then PLATFORM='android' else PLATFORM='ios' fi
Я также хочу сгенерировать и загружать исходные карты, если я нахожусь в определенных ветвях, поэтому я должен добавить этот небольшой фрагмент в начале сценария, чтобы запустить его только в производство
, QA
или Постановка
Анкет
if [ "$APPCENTER_BRANCH" != "production" ] && [ "$APPCENTER_BRANCH" != "qa" ] && [ "$APPCENTER_BRANCH" != "staging" ] then echo "This branch is not in the selected ones:" $APPCENTER_BRANCH exit fi
Завершая все
Если мы собраем все вышеперечисленное вместе, мы получим этот файл, который автоматизирует процесс генерации и загрузки исходных карт.
Оригинал: «https://dev.to/jorgemasta/app-center-bugsnag-with-react-native-the-right-automatic-way-le7»