Рубрики
Uncategorized

App Center + Bugsnag с React Native. Правильный (автоматический) способ

TLTR: Добавьте этот файл в вашу корневую папку, мы классные люди, поэтому у нас есть непрерывное развертывание … с меткой реакции, DevOps, AppCenter, Bugsnag.

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»