发行版是部署到环境的代码版本。 当您向Sentry提供有关您的版本的信息时,您将解锁许多新功能:
- 确定新版本中引入的问题和回归
- 预测哪个提交导致问题以及谁可能负责
- 通过在提交消息中包含问题编号来解决问题
- 部署代码时接收电子邮件通知
此外,版本用于将sourcemap应用于缩小的JavaScript以查看原始未转换的源代码。
配置版本
完全配置版本需要三个步骤:
- 标记您的错误
- 关联存储库和关联提交
- 部署版本时告诉Sentry
一、标记错误
包括配置客户端SDK的版本ID(a.k.a版本)。这通常是git SHA或自定义版本号。请注意,每个组织的发布都是全局的,因此请确保在需要时为其添加项目特定的内容:
Sentry.init({
release: "my-project-name@2.3.12"
})
如何使代码可用于您的代码取决于您。例如,您可以使用在构建过程中设置的环境变量。
这会在发布时注释每个错误。我们建议您在部署之前告诉Sentry有关新版本的信息,因为这将解锁更多功能(在步骤2中进行了解释)。但是如果你不这样做,Sentry会在第一次看到带有该版本ID的错误时自动在系统中创建一个发布实体。
在此之后,您应该会看到有关发布的信息,例如发布中引入的新问题和回归。
二、关联存储库和关联提交
在此步骤中,您将告知Sentry哪些提交与发布相关联,允许Sentry查明哪些提交可能导致问题,并允许您通过在提交消息中包含问题编号来解决问题。
这是一个两步过程:
1、关联存储库
首先,确保已在“组织设置”>“集成”中为源代码管理工具安装了全局集成。 您需要成为Sentry组织的所有者或经理才能执行此操作。 在此处阅读有关Sentry角色的更多信息。
进入“组织设置”>“集成”并安装集成后,单击实例旁边的“配置”按钮。
在“存储库”面板中,单击“添加存储库”,然后添加您要跟踪的任何存储库。 这会在存储库上创建一个webhook,它会发送有关每个提交的Sentry元数据(例如更改的作者和文件)。
如果您要链接GitHub存储库,请确保您对存储库具有管理员或所有者权限,并且该Sentry是GitHub帐户设置中的授权GitHub应用程序。
如果您仍然无法添加它,可以尝试断开连接,然后重新连接GitHub标识。
2、将提交与发布相关联
在发布过程中,添加一个步骤以在Sentry中创建发布对象,并将其与存储库中的提交相关联。 有两种方法:
a、使用Sentry的命令行界面(推荐)。
# Assumes you're in a git repository
export SENTRY_AUTH_TOKEN=...
export SENTRY_ORG=my-org
VERSION=$(sentry-cli releases propose-version)
# Create a release
sentry-cli releases new -p project1 -p project2 $VERSION
# Associate commits with the release
sentry-cli releases set-commits --auto $VERSION
注意:您需要确保使用的是Auth Tokens,而不是不推荐使用的API密钥。
在上面的示例中,我们使用proposal-version子命令来自动确定版本ID。 然后我们为项目project1和project2的组织my-org创建一个标记为VERSION的版本。 最后,我们使用--auto标志自动确定存储库名称,并将先前版本的提交与当前头部提交之间的提交与发布相关联。 如果您之前从未关联过提交,我们将使用最新的10次提交。
如果您想要更多地控制要关联的提交,或者无法在存储库中执行命令,则可以手动指定存储库和范围:
sentry-cli releases set-commits --commit "my-repo@from..to" $VERSION
在这里,我们将from和to之间的提交(或引用)与当前版本相关联,而不是之前版本的提交。 存储库名称my-repo应与您在上一步中链接repo时输入的名称相匹配,其名称为owner-name / repo-name。 from commit是可选的,如果排除,我们将使用先前版本的提交作为基线。
有关更多信息,请参阅CLI文档。
b、使用API
# Create a new release
curl https://sentry.io/api/0/organizations/:organization_slug/releases/ \
-X POST \
-H 'Authorization: Bearer {TOKEN}' \
-H 'Content-Type: application/json' \
-d '
{
"version": "2da95dfb052f477380608d59d32b4ab9",
"refs": [{
"repository":"owner-name/repo-name",
"commit":"2da95dfb052f477380608d59d32b4ab9",
"previousCommit":"1e6223108647a7bfc040ef0ca5c92f68ff0dd993"
}],
"projects":["my-project","my-other-project"]
}
'
注意:我们将发布更改为组织级实体而不是项目级实体,因此,如果您尝试向使用项目发布端点的现有发行版配置添加提交,则需要更改URL。
如果您想更好地控制提交的顺序,可以向我们发送所有提交的列表。 这可能看起来像这样:
import subprocess
import requests
SENTRY_API_TOKEN = <my_api_token>
sha_of_previous_release = <previous_sha>
log = subprocess.Popen([
'git',
'--no-pager',
'log',
'--no-merges',
'--no-color',
'--pretty=%H',
'%s..HEAD' % (sha_of_previous_release,),
], stdout=subprocess.PIPE)
commits = log.stdout.read().strip().split('\n')
data = {
'commits': [{'id': c, 'repository': 'my-repo-name'} for c in commits],
'version': commits[0],
'projects': ['my-project', 'my-other-project'],
}
res = requests.post(
'https://sentry.io/api/0/organizations/my-org/releases/',
json=data,
headers={'Authorization': 'Bearer {}'.format(SENTRY_API_TOKEN)},
)
完成此步骤后,可疑提交和建议的受理人将开始出现在问题页面上。 我们通过将发布中的提交,这些提交所触及的文件,堆栈跟踪中观察到的文件,这些文件的作者和所有权规则捆绑在一起来确定这些。
此外,您还可以通过在提交消息中包含问题ID来解决问题。 您可以在“受理人”下拉列表旁边的问题详细信息页面顶部找到问题ID。 例如,提交消息可能如下所示:
Prevent empty queries on users
Fixes SENTRY-317
当Sentry看到此提交时,我们将在问题中引用提交,并且当您在Sentry中创建发布时,我们将在该发行版中将该问题标记为已解决。
注意:如果您使用的是GitHub,则可能启用了隐私设置,阻止Sentry识别用户的真实电子邮件地址。 如果您希望使用建议的所有者功能,则需要确保在GitHub的帐户设置中取消选中“保持我的电子邮件地址保密”。
三、部署版本时告诉Sentry
在部署版本时告诉Sentry,我们会自动向已经提交正在部署的版本的Sentry用户发送电子邮件。
您必须在SDK中设置环境上下文才能使用此功能。 要让Sentry知道您已部署,只需在创建发布后发送其他请求:
sentry-cli releases deploys VERSION new -e ENVIRONMENT
您还可以使用我们的API来创建部署。
四、发布工件
Javascript和iOS项目可以利用发布工件来消除或符号化错误堆栈跟踪。 要了解更多信息,请查看我们的iOS和JavaScript文档。