Sentry关联发布

发行版是部署到环境的代码版本。 当您向Sentry提供有关您的版本的信息时,您将解锁许多新功能:

  • 确定新版本中引入的问题和回归
  • 预测哪个提交导致问题以及谁可能负责
  • 通过在提交消息中包含问题编号来解决问题
  • 部署代码时接收电子邮件通知

此外,版本用于将sourcemap应用于缩小的JavaScript以查看原始未转换的源代码。

配置版本

完全配置版本需要三个步骤:

  1. 标记您的错误
  2. 关联存储库和关联提交
  3. 部署版本时告诉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文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值