如何在 React 项目中自动创建 Sentry 版本并将源映射上传到 Sentry?

How to automatically create a Sentry release and upload source-maps to Sentry in a react project?

我有一个 create-react-app 项目,我希望部署过程生成一个 Sentry 版本并将源映射上传到 Sentry。

此脚本将为 package.json 文件中指定的版本创建一个 Sentry 版本,并将源映射上传到 Sentry。

它适用于任何 JS 项目,而不仅仅是 React。

在您的项目根目录中创建一个文件并将其命名为 deploy.sh:

SENTRY_TOKEN="YOUR_TOKEN"
PACKAGE_VERSION=`cat package.json \
  | grep version \
  | head -1 \
  | awk -F: '{ print  }' \
  | sed 's/[",]//g' \
  | tr -d '[[:space:]]'`

printf "\nBuilding version $PACKAGE_VERSION...\n\n"

#2) Build for dev and cd to build directory
npm run build # or whatever your build command is
cd build/static/js # or whatever your build folder is

#3) create Sentry release
SOURCE_MAP=`find . -maxdepth 1 -mindepth 1 -name '*.map' | awk '{ gsub("./", "") ; print [=10=] }'`
printf "\nCreating a Sentry release for version $PACKAGE_VERSION...\n"

curl https://sentry.io/api/0/projects/:sentry_organization_slug/:sentry_project_slug/releases/ \
  -X POST \
  -H "Authorization: Bearer ${SENTRY_TOKEN}" \
  -H 'Content-Type: application/json' \
  -d "{\"version\": \"${PACKAGE_VERSION}\"}" \

#4) Upload a file for the given release
printf "\n\nUploading sourcemap file to Sentry: ${SOURCE_MAP}...\n"
curl "https://sentry.io/api/0/projects/:sentry_organization_slug/:sentry_project_slug/releases/$PACKAGE_VERSION/files/" \
  -X POST \
  -H "Authorization: Bearer ${SENTRY_TOKEN}" \
  -F file=@${SOURCE_MAP} \
  -F name="https://THE_URL_OF_THE_MAIN_JS_FILE/$SOURCE_MAP"

#5) IMPORTANT: Delete the sourcemaps before deploying
rm $SOURCE_MAP

#6) upload to your cloud provider
...

替换:

  1. :sentry_organization_slug:sentry_project_slug 以及来自哨兵的正确值(来自哨兵帐户网站内任何页面的 URL)
  2. SENTRY_TOKEN 使用你来自 Sentry 的令牌
  3. THE_URL_OF_THE_MAIN_JS_FILE 和 URL 可以公开访问您的 React 构建文件。

运行.

确保您不要忘记在每个版本

上更新 package.json 版本

我最近遇到了同样的问题,尽管 Sentry 没有针对 Create React App 的官方解决方案,但他们的工具非常棒,而且很容易自动完成自己创建发布的过程。您需要生成版本名称、构建应用程序并使用此名称来初始化 Sentry 库、创建 Sentry 版本并上传源地图。

我写了一篇文章,详细解释了如何去做:https://medium.com/@vshab/create-react-app-and-sentry-cde1f15cbaa

或者您可以直接查看配置项目示例:https://github.com/vshab/create-react-app-and-sentry-example