Sentry CLI

使用 Sentry CLI 上传源映射。

在本指南中,您将学习如何成功使用我们的 sentry-cli 工具上传源映射。

本指南假设以下条件:

  • sentry-cli 版本 >= 2.17.0
  • Sentry JavaScript SDK 版本 >= 7.47.0

使用 Sentry CLI 配置源映射上传最简单的方法是通过 Sentry 向导:

Copied
npx @sentry/wizard@latest -i sourcemaps

向导将引导您完成以下步骤:

  • 登录 Sentry 并选择一个项目
  • 安装必要的 Sentry 包
  • 配置您的构建工具以生成和上传源映射
  • 配置您的 CI 以上传源映射

如果您想使用 CLI 配置源映射上传,请按照以下步骤操作。

您可以使用您选择的工具生成源映射。请参阅 上传源映射 下的其他指南中的示例。

您可以在以下链接找到 Sentry CLI 的安装说明:https://docs.sentry.io/cli/installation/

有关 sentry-cli 配置的更多信息,请参阅 Sentry CLI 配置文档

确保 sentry-cli 已为您的项目配置好。为此,您可以使用环境变量:

.env.local
Copied
SENTRY_ORG=example-org
SENTRY_PROJECT=example-project
SENTRY_AUTH_TOKEN=sntrys_YOUR_TOKEN_HERE

调试 ID 用于将事件的堆栈帧与其对应的最小化源文件和源映射文件匹配。如果您想了解更多关于工件包和调试 ID 的信息,请访问 什么是工件包

要注入调试 ID,请使用以下命令:

Copied
sentry-cli sourcemaps inject /path/to/directory

最小化源文件应在末尾包含一个名为 debugId 的注释,例如:

example_minified_file.js
Copied
...
//# debugId=<debug_id>
//# sourceMappingURL=<sourcemap_url>

源映射文件应包含一个名为 debug_id 的字段,例如:

example_source_map.js.map
Copied
{
    ...
    "debug_id":"<debug_id>",
    ...
}

在您将调试 ID 注入工件后,使用以下命令上传它们。

Copied
sentry-cli sourcemaps upload /path/to/directory

打开 Sentry 并导航到 项目设置 > 源映射。如果您在选项卡导航中选择“工件包”,您将看到所有已成功上传到 Sentry 的工件包。

如果您是按照本指南在本地机器上操作,那么您已经成功完成了以下步骤:

  1. 通过运行应用程序的构建过程生成了最小化源文件和源映射文件(工件)。
  2. 将调试 ID 注入到刚刚生成的工件中。
  3. 使用我们的上传命令将这些工件上传到 Sentry。

最后一步是使用第一步中生成的工件部署应用程序的新版本。我们强烈建议您将 sentry-cli 集成到您的 CI/CD 流水线中,以确保每次后续部署都会自动将调试 ID 注入每个工件并直接上传到 Sentry。

在您的 SDK 选项中提供一个 release 属性。

Copied
Sentry.init({
  // This value must be identical to the release name specified during upload
  // with the `sentry-cli`.
  release: "<release_name>",
});

之后,使用额外的 --release 选项运行 sourcemaps upload 命令。请确保为 <release_name> 指定的值与 SDK 选项中指定的值相同。

Copied
sentry-cli sourcemaps upload --release=<release_name> /path/to/directory

使用 --release 选项运行 upload 不会自动在 Sentry 中创建版本。您可以等待第一个带有新版本设置的事件通过 Sentry.init 发送到 Sentry,或者使用相同的名称在单独的步骤中通过 CLI 创建版本

除了 release,您还可以为上传的工件添加 dist,以设置上传文件的分发标识符。为此,请使用额外的 --dist 选项运行 sourcemaps upload 命令。

在您的 SDK 选项中提供 releasedist 属性。

Copied
Sentry.init({
  // These values must be identical to the release and dist names specified during upload
  // with the `sentry-cli`.
  release: "<release_name>",
  dist: "<dist_name>",
});

分发标识符用于在同一版本内区分多个同名文件。dist 可用于区分不同的构建或部署变体。

Copied
sentry-cli sourcemaps upload --release=<release_name> --dist=<dist_name> /path/to/directory