什么是工件包

了解工件包。

本文解释了工件包(Artifact Bundles)的内部工作原理及其使用的影响。如果您想了解如何上传源映射,请访问 上传源映射

Sentry 使用 工件包 来管理堆栈跟踪的解压缩。从高层次来看,一个包包含所有最小化源文件和源映射文件(统称为 工件),这些是 Sentry 解压缩堆栈跟踪帧所需的。

工件包是我们新的包格式,旨在通过 添加对调试 ID 的支持移除创建 release 的需要 来解决旧版发布包的不足。

工件包的工作原理

工件包通过使用一种新的识别机制——调试 ID(Debug IDs)来解决路径匹配的挑战。我们不再依赖路径,而是通过调试 ID(UUID)唯一标识并绑定最小化源文件和源映射文件对。通过这种方式,我们可以快速识别最小化源文件及其对应的源映射文件,而无需检查任何路径。因此,您不必担心路径配置错误。

当使用 sentry-cli 或 Webpack、Vite 或 Rollup 打包插件时,调试 ID 是根据源文件内容确定性生成的。目前 esbuild 不支持确定性调试 ID。

如果您想了解更多关于调试 ID 背后的原理,我们建议您阅读我们的 工程博客

由于您可能仍然希望知道某个特定的工件包连接到哪个发布版本,我们设计了一种新方法来将 release 关联到您的包。

新的工件包格式支持一种新的关联类型,称为弱发布关联,它可以将 release 和可选的 dist 关联到包。这种关联类型 不需要在上传源映射之前创建 release,从而允许在管道的后续步骤中单独创建 release

通过关联 release 和可选的 dist,您可以快速从 Sentry 中的 release 跳转到相应的工件包,而不必担心哪些工件包用于您的错误。

工件包的保留期为 90 天,采用 空闲时间到期 机制。 这意味着上传的工件包会在它们被用于事件处理期间一直保留。 一旦工件包在过去 90 天内未被用于处理传入事件, 它将自动过期并有资格被删除。