Sentry命令行工具之发布管理

sentry-cli工具可用于Sentry的发布管理。它允许您创建,编辑和删除版本以及为它们上载发布工件。

一、创建版本

使用sentry-cli发布新命令创建发行版。它至少需要一个唯一标识关系的版本标识符。它可以是任意的,但对于某些平台,建议存在:

  • 对于移动设备,请使用VERSION_NUMBER或VERSION_NUMBER(BUILD_NUMBER)。例如1.0.0或1.0.0(1234)。
  • 如果您使用DVCS,我们建议使用标识哈希(例如:提交SHA,da39a3ee5e6b4b0d3255bfef95601890afd80709)。您可以让sentry-cli自动为支持的版本控制系统确定此哈希值,并使用sentry-cli版本提出版本。
  • 如果您标记版本,我们建议使用发布标记(例如:v1.0.0)。

版本也可以由不同的系统自动创建。例如,在上传sourcemap时,会自动创建发布。当发布事件发生时,某些客户端会创建同样的版本。

二、完成发布

默认情况下,创建“未发布”的版本。这可以通过将--finalize传递给新命令来更改,该命令将立即完成释放,或者您可以稍后单独调用sentry-cli release finalize VERSION。如果您在构建过程中管理版本,则后者非常有用:

#!/bin/sh
sentry-cli releases new "$VERSION"
# do you build steps here
# once you are done, finalize
sentry-cli releases finalize "$VERSION"

如果您正在使用git,您可以要求哨兵确定$ VERSION:

#!/bin/sh
VERSION=`sentry-cli releases propose-version`

然后,UI将反映创建发布所花费的时间。您也可以在以后推送发布时将其终结(例如:部署到您的计算机,在应用程序商店中启用等)。

三、提交整合

如果您在Sentry组织中配置了存储库,则可以将提交与您的版本相关联。目前只有在使用GitHub时才有效,但我们稍后会对其进行扩展。

有两种模式可供您使用。一种是全自动模式。如果要从git存储库进行部署,并且sentry-cli可以从当前工作目录中发现git存储库,则可以使用--auto标志设置提交:

sentry-cli releases set-commits "$VERSION" --auto

如果您在不访问git存储库的情况下进行部署,则可以手动指定提交。为此,请以REPO_NAME @ REVISION格式将-commit参数传递给set-commits命令。您可以为您拥有尽可能多的存储库重复此操作:

sentry-cli releases set-commits "$VERSION" --commit "my-repo@deadbeef"

要查看组织可用的存储库,可以运行sentry-cli repos列表,该列表将返回已配置存储库的列表。

请注意,您需要引用使用实际完全提交SHA所需的版本。如果要引用标记或引用(如HEAD),则需要检出存储库,并从您调用sentry-cli的路径中访问该存储库。

如果您还想设置先前的提交而不是让服务器使用先前版本作为基点,则可以通过设置提交范围来实现:

sentry-cli releases set-commits "$VERSION" --commit "[email protected]"

四、整合发布工件

当您使用JavaScript和其他平台时,您可以将发布工件上传到Sentry,然后在处理过程中对其进行考虑。最常见的发布工件是sentry-cli具有特定支持的源映射。

为了管理发布artfact,可以使用sentry-cli发布文件命令,该命令本身提供各种子命令。

五、上传文件

最常见的用例是上传文件。对于通用上载,可以使用sentry-cli发布文件VERSION upload命令。但是,由于大多数发布工件都与JavaScript源图相关,因此我们有一个上传源映射的便捷方法。

上传的文件通常以完整(例如:http://example.com/foo.js)或截断的URL(例如:〜/ foo.js)命名。

仅在事件处理时考虑发布工件。因此,虽然可以在事件之后修改发布工件,但只考虑该发布的未来事件。

上传的第一个参数是文件的路径,第二个是我们应该与之关联的可选URL。请注意,如果要使用缩写URL(例如:〜/ foo.js),请确保使用单引号以避免shell扩展到主文件夹。

$ sentry-cli releases files VERSION upload /path/to/file '~/file.js'

六、上传SourceMap文件

对于源图上传,提供了一个单独的命令,可帮助您上传和验证SourceMap文件。

$ sentry-cli releases files VERSION upload-sourcemaps /path/to/sourcemaps

此命令提供了许多选项,并尝试尽可能多的自动检测。默认情况下,它将扫描提供的文件路径,并使用〜/前缀通过路径命名。它还将尝试根据文件名找出缩小文件和源映射之间的引用。因此,如果您有一个名为foo.min.js的文件,它是一个缩小的JavaScript文件和一个名为foo.min.map的源图,那么它将发送一个长的Sourcemap标头来关联它们。这适用于系统可以检测到的关系的文件。

存在以下选项以更改upload命令的行为:

--no-sourcemap-reference

这可以防止自动检测源映射引用。不建议使用此选项,因为系统会回退到不发送引用。但是,如果您手动将sourceMapURL注释添加到缩小的文件中,并且您知道它们比自动检测更正确,那么它很有用。

--rewrite

提供此选项时,sentry-cli将在上载之前重写源映射。这样做有两件事:它使索引的源映射变平。这样做的好处是它可以有时压缩源映射,这可能会缩短处理时间,并且可以使用嵌入源映射引用的本地路径的工具,这些工具在服务器上不起作用。在使用源映射进行开发时尤其有用。源内容的源映射中的本地文件引用是内联的。这对于本机反应项目尤其有效,这些项目可能会引用您可能不希望单独上传的数千个文件。它会在上传之前自动验证源地图,这可以发现在事件发生之前您不会发现的错误。这是 - validate的改进版本。

--strip-prefix / --strip-common-prefix

当与--rewrite配对时,这将切断上传文件中的前缀。例如,您可以使用它来删除构建机器特定的路径。公共前缀版本将尝试自动猜测公共前缀是什么,并自动将其关闭。

--validate

如果未启用重写,则会在上载之前尝试进行源映射验证。它会发现源地图的各种问题,如果找到则会取消上传。这不是默认值,因为这可能导致误报。

--url-prefix

这会在所有文件前面设置一个URL前缀。默认为〜/但您可能希望将其设置为完整URL。如果您的文件存储在子文件夹中,这也很有用。例如:--url-prefix'〜/ static / js'--ext覆盖要上载的文件扩展名列表。默认情况下,处理以下文件扩展名:js,map,jsbundle和bundle。该工具将根据文件内容(例如:源,缩小的源和源映射)自动检测文件的类型,并采取适当的措施。对于多个扩展,您需要重复该选项,例如:--ext js --ext map。

--ignore

指定一个或多个被忽略的文件和文件夹模式。覆盖忽略文件中指定的模式。有关更多信息,请参阅--ignore-file。请注意,与--ignore-file不同,此参数是相对于指定的路径参数进行解释的。

--ignore-file

指定包含要在扫描期间忽略的文件和文件夹模式的文件。忽略模式遵循gitignore规则,并相对于忽略文件的位置进行评估。该文件在当前工作目录或其任何父目录中假定。 

一些事例用法:

$ sentry-cli releases files 0.1 upload-sourcemaps /path/to/sourcemaps
$ sentry-cli releases files 0.1 upload-sourcemaps /path/to/sourcemaps \
    --url-prefix '~/static/js`
$ sentry-cli releases files 0.1 upload-sourcemaps /path/to/sourcemaps \
    --url-prefix '~/static/js` --rewrite --strip-common-prefix
$ sentry-cli releases files 0.1 upload-sourcemaps /path/to/sourcemaps \
    --ignore-file .sentryignore

 七、列出文件

要列出上载的文件,可以使用以下命令:

$ sentry-cli releases files VERSION list

八、删除文件

您也可以删除已上传的文件。通过名称或所有文件一次:

$ sentry-cli releases files VERSION delete NAME_OF_FILE
$ sentry-cli releases files VERSION delete --all

九、创建部署

您还可以将部署与版本关联。要创建部署,首先要创建一个版本,然后为其部署。至少,您应该提供部署所涉及的“环境”(生产,登台等)。你可以自由地定义这个:

$ sentry-cli releases deploys VERSION new -e ENVIRONMENT

(可选)您还可以定义部署所花费的时间:

start=$(date +%s)
...
now=$(date +%s)
sentry-cli releases deploys VERSION new -e ENVIRONMENT -t $((now-start))

 也可以列出部署(但不能删除它们):

$ sentry-cli releases deploys VERSION list

猜你喜欢

转载自blog.csdn.net/u013702678/article/details/83154342