1. 程式人生 > >Sentry命令列工具之釋出管理

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 "[email protected]"

要檢視組織可用的儲存庫,可以執行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