快速使用 Docker 上手 Sentry-CLI - 玩转 Source Maps 使用 (create-react-app)

简介: 快速使用 Docker 上手 Sentry-CLI - 玩转 Source Maps 使用 (create-react-app)

入门



使用 sentry-cli 上传 source maps 时,您需要设置构建系统以创建版本(release)并上传与该版本对应的各种源文件。要让 Sentry 对您的堆栈跟踪进行解码,请同时提供:


  • 要部署的文件(换句话说,您的编译/压缩/打包(transpilation/minification/bundling) 过程的结果;例如,app.min.js
  • 对应的 source maps

如果 source map 文件不包含您的原始源代码 (sourcesContent),您还必须提供原始源文件。如果源文件丢失,Sentry CLI 将尝试自动将源嵌入到您的 source maps 中。


Sentry 使用 releases 将正确的 source maps 与您的事件相匹配。要创建新版本,请运行以下命令(例如,在发布期间):


sentry-cli releases new <release_name>


release 名称在您的组织中必须是唯一的,并且与您的 SDK 初始化代码中的 release 选项相匹配。然后,使用 upload-sourcemaps 命令扫描文件夹中的 source maps,处理它们,并将它们上传到 Sentry



sentry-cli releases files <release_name> upload-sourcemaps /path/to/files


您可以通过导航到 [Project] > Project Settings > Source Maps 找到上传到 Sentry 的工件。


此命令会将所有以 .js.map 结尾的文件上传到指定的版本(release)。如果你想改变这些扩展 — 例如,上传 typescript 源文件 — 使用 --ext 选项:


sentry-cli releases files <release_name> upload-sourcemaps --ext ts --ext map /path/to/files


到目前为止,该版本处于草稿状态(“unreleased”)。上传所有 source maps 后,您的应用程序已成功发布,使用以下命令完成 release


sentry-cli releases finalize <release_name>


实战



Create React App 快速创建一个 Demo


新建一个 typescript app 模板项目:


npx create-react-app my-app --template typescript


加入 @sentry/react@sentry/tracing 包:


yarn add @sentry/react @sentry/tracing


修改项目代码


进入 src/index.tsx,进行如下调整:


import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as Sentry from "@sentry/react";
import { Integrations } from "@sentry/tracing";
Sentry.init({
  dsn: "https://token@your.sentry.com/2", // 你的 Sentry 项目 DSN
  release: "1.0.0",
  integrations: [new Integrations.BrowserTracing()]
});
ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);


进入 src/App.tsx,进行如下调整:


import React from 'react';
import logo from './logo.svg';
import './App.css';
const onError = () => {
  // 这里故意抛出一个错误,让 sentry 捕获
  throw new Error("Break the world")
}
const btnStyles = {width: "200px", height: "50px", cursor: "pointer", fontSize: "22px"}
function App() {
  return (
    <div className="App">
      <header className="App-header">
        <button style={btnStyles} onClick={onError}>Break the world</button>
        <img src={logo} className="App-logo" alt="logo" />
      </header>
    </div>
  );
}
export default App;


加入 .sentryclirc 文件,详情可看上篇 -> 快速使用 Docker 上手 Sentry-CLI - 创建一个版本


[auth]
token=your-auth-token
[defaults]
org=sentry
project=create-react-app-sentry
url=https://x.xxx.com


编译项目


yarn build


最终项目结构

微信图片_20220612175258.png

上传 Source Maps


在项目根目录中,进入 sentry-cli docker 容器 shell 环境:


docker run --rm -it -v $(pwd):/work getsentry/sentry-cli /bin/sh


设置变量:


VERSION="1.0.0" # 版本号
SOURCEMAPS_PATH="./build/static/js" # 构建的 Source Maps
URL_PREFIX="~/static/js/" # 说明你的 js 相关文件被托管在 http://example.com/static/js/ 下


执行如下命令:


sentry-cli releases new "$VERSION"
# Created release 1.0.0.
sentry-cli releases files "$VERSION" upload-sourcemaps "$SOURCEMAPS_PATH" --url-prefix "$URL_PREFIX"
# > Found 8 release files
# > Analyzing 8 sources
# > Analyzing completed in 0.101s
# > Rewriting sources
# > Rewriting completed in 0.034s
# > Adding source map references
# > Bundling files for upload... 
# > Bundling completed in 0.064s
# > Optimizing completed in 0.002s
# > Uploading completed in 2.144s
# > Uploaded release files to Sentry
# > Processing completed in 0.077s
# > File upload complete (processing pending on server)
# Source Map Upload Report
#   Minified Scripts
#     ~/static/js/2.42a26a34.chunk.js (sourcemap at 2.42a26a34.chunk.js.map)
#     ~/static/js/3.edf82367.chunk.js (sourcemap at 3.edf82367.chunk.js.map)
#     ~/static/js/main.d1a3df88.chunk.js (sourcemap at main.d1a3df88.chunk.js.map)
#     ~/static/js/runtime-main.b608d38a.js (sourcemap at runtime-main.b608d38a.js.map)
#   Source Maps
#     ~/static/js/2.42a26a34.chunk.js.map
#     ~/static/js/3.edf82367.chunk.js.map
#     ~/static/js/main.d1a3df88.chunk.js.map
#     ~/static/js/runtime-main.b608d38a.js.map
sentry-cli releases finalize "$VERSION"
# Finalized release 1.0.0.
exit
# 退出容器


Sentry 后台,你应该看到如下图:


微信图片_20220612175321.png


本地测试


如果你是 Mac 本地开发环境,可直接执行如下命令:


pushd build; python -m SimpleHTTPServer; popd


点击 Break the world 按钮:


微信图片_20220612175336.png


正常情况下,错误已被上传到 Sentry,然后在错误详情中应看到如下图:

微信图片_20220612175347.png


相关文章
|
2月前
|
Kubernetes Linux Docker
【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
|
Linux Docker 容器
yum install docker报错:Another app is currently holding the yum lock
今天在centos7安装docker的时候yum报错。 在进程里查看下:ps -ef | grep update 把后台占用的更新进程杀掉。
102 0
|
jenkins Linux Shell
软件测试|一键搞定centos7的docker+selenium+appium+jenkins+android_app源码打包成apk的环境搭建
软件测试|一键搞定centos7的docker+selenium+appium+jenkins+android_app源码打包成apk的环境搭建
160 0
|
关系型数据库 MySQL 应用服务中间件
|
Docker 容器
1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建一个版本
1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建一个版本
261 0
|
JSON Kubernetes JavaScript
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps详解(二)
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps详解(二)
535 0
|
Kubernetes JavaScript 前端开发
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps详解(一)
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps详解(一)
433 0
|
域名解析 算法 API
使用 Docker 镜像构建 App
本文主要为大将讲解如何使用 Docker 镜像创建 App 以及如何更新镜像。
1572 0
使用 Docker 镜像构建 App
|
Web App开发 算法 对象存储
使用 Docker 镜像构建批量计算 App
批量计算提供了 [App 功能](https://help.aliyun.com/document_detail/98906.html?spm=a2c4g.11186623.6.591.6ce558471gLY2q),可以使用虚拟机(VM)镜像来定制运行环境,也可以使用 Docker 镜像,本文将介绍如何使用 Docker 镜像创建 App 和提交 App 作业。 ## 背景 如果您的
1293 1
|
容器 Docker 持续交付
下一篇
无影云桌面