Reactjs 如何在react项目中自动创建Sentry发布并将源地图上载到Sentry?

Reactjs 如何在react项目中自动创建Sentry发布并将源地图上载到Sentry?,reactjs,bash,create-react-app,source-maps,sentry,Reactjs,Bash,Create React App,Source Maps,Sentry,我有一个创建react应用程序项目,我希望部署过程生成Sentry版本,并将源地图上载到Sentry。此脚本将为package.json文件中指定的版本创建Sentry版本,并将源地图上载到Sentry 它适用于任何JS项目,而不仅仅是React 在项目根目录中创建一个文件,并将其命名为deploy.sh: SENTRY_TOKEN="YOUR_TOKEN" PACKAGE_VERSION=`cat package.json \ | grep version \ | head -1 \

我有一个创建react应用程序项目,我希望部署过程生成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 $2 }' \
  | 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 $0 }'`
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
...
替换:

  • :sentry\u organization\u slug
    :sentry\u project\u slug
    具有来自sentry的正确值(来自您的sentry帐户网站内任何页面的URL)
  • SENTRY\u令牌
    与您的哨兵令牌
  • 主JS\u文件的\u URL\u
    以及可公开访问react构建文件的URL

  • 请确保不要忘记在每个版本上更新package.json版本

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

    我写了一篇文章,详细解释了如何做到这一点:


    或者您可以直接查看已配置项目的示例:

    如何运行此脚本?此外,在每次部署之前是否需要手动运行此脚本,以及是否使用
    npm run build
    替换此脚本,因为此脚本已在步骤2中运行该命令?当我编写此答案时,我将其手动用作构建和部署脚本。您也可以在CLI中运行它(例如Travis)。是的,它取代了
    npm运行构建
    @Badrush