自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊 Sentry Relay 二次開發(fā)調(diào)試

開發(fā) 前端
對(duì)于測(cè)試,我們使用無處不在的 pytest。同樣,確保您的 virtualenv 處于活動(dòng)狀態(tài)并且已安裝最新版本的原生庫(kù)。

開發(fā)

要構(gòu)建 Relay,我們需要最新的穩(wěn)定版 Rust。crate 被拆分為具有多個(gè)功能的工作區(qū),因此在運(yùn)行構(gòu)建或運(yùn)行測(cè)試時(shí),請(qǐng)始終確保傳遞 --all 和 --all-features 標(biāo)志。processing 功能還需要 C 編譯器和 CMake。

要安裝開發(fā)環(huán)境,必須安裝 librdkafka 并在 path 上。在 macOS 上,我們需要使用 brew install librdkafka 安裝它,因?yàn)榘惭b腳本使用 brew --prefix 來確定正確的位置。

我們使用 VSCode 進(jìn)行開發(fā)。此存儲(chǔ)庫(kù)包含配置代碼樣式、linter 和有用功能的設(shè)置文件。首次打開項(xiàng)目時(shí),請(qǐng)確保 安裝推薦擴(kuò)展,因?yàn)樗鼈儗⒃试S編輯器在編碼期間提供幫助。

存儲(chǔ)庫(kù)的根目錄包含一個(gè) Makefile,其中包含用于開發(fā)的有用命令:

  • make check: 運(yùn)行代碼格式檢查和 linter。這在打開 pull request 之前很有用。
  • make test: 運(yùn)行單元測(cè)試、集成測(cè)試和 Python 包測(cè)試(有關(guān)更多信息,請(qǐng)參見下文)。
  • make all: 運(yùn)行所有檢查和測(cè)試。這會(huì)運(yùn)行在 CI 中也執(zhí)行的大多數(shù)任務(wù)。
  • make clean: 刪除所有構(gòu)建工件、virtualenv 和緩存文件。

集成測(cè)試要求 Redis 和 Kafka 在其默認(rèn)配置中運(yùn)行。獲取所有必需服務(wù)的最便捷方式是通過 sentry devservices,這需要最新的 Sentry 開發(fā)環(huán)境。

  • sentry devservices

https://develop.sentry.dev/services/devservices

構(gòu)建和運(yùn)行

重建和運(yùn)行 Relay 的最簡(jiǎn)單方法是使用 cargo。根據(jù)配置,您可能需要運(yùn)行 Sentry 的本地實(shí)例。

# 第一次初始化 Relay
cargo run --all-features -- config init

# 重建并運(yùn)行所有功能
cargo run --all-features -- run

標(biāo)準(zhǔn)構(gòu)建命令也可用作 make 目標(biāo)。請(qǐng)注意,發(fā)布版本仍會(huì)生成調(diào)試信息。

# 在調(diào)試模式下不進(jìn)行優(yōu)化構(gòu)建。
make build

# 使用發(fā)布優(yōu)化和調(diào)試信息進(jìn)行構(gòu)建。
make release

為了在進(jìn)行一些更改后快速驗(yàn)證 Relay 是否編譯,您還可以使用 cargo check:

cargo check --all --all-features

功能

默認(rèn)情況下,Relay 編譯時(shí)不使用 processing 模式。這是用于作為代理運(yùn)行的中繼的配置。有兩個(gè)可選功能:

  • processing: 啟用事件處理(event processing)和攝取(ingestion)功能。這允許在配置中啟用 processing。啟用后,Relay 會(huì)將事件生成到 Kafka topic 中,而不是轉(zhuǎn)發(fā)到配置的上游。此外,它將執(zhí)行完整的事件規(guī)范化、過濾和速率限制。
  • ssl: 在服務(wù)器中啟用 SSL 支持。

要啟用功能,請(qǐng)將其傳遞給 cargo 調(diào)用。例如,要在啟用了 processing 功能的情況下跨所有 workspace crates 運(yùn)行測(cè)試,請(qǐng)運(yùn)行:

cargo run --features=processing

測(cè)試

測(cè)試套件包括單元測(cè)試、集成測(cè)試套件和 Python 包的單獨(dú)測(cè)試套件。單元測(cè)試是作為 Rust crates 的一部分實(shí)現(xiàn)的,可以通過以下方式運(yùn)行:

# 測(cè)試默認(rèn)功能
make test-rust

# 為所有功能運(yùn)行 Rust 測(cè)試
make test-rust-all

集成測(cè)試套件需要 python。默認(rèn)情況下,集成測(cè)試套件將創(chuàng)建一個(gè) virtualenv,構(gòu)建啟用處理的 Relay 二進(jìn)制文件,并運(yùn)行一組集成測(cè)試:

# 創(chuàng)建一個(gè)新的 virtualenv,構(gòu)建 Relay 并運(yùn)行集成測(cè)試
make test-integration

# 手動(dòng)構(gòu)建和運(yùn)行單個(gè)測(cè)試
make build
.venv/bin/pytest tests/integration -k <test_name>

Linting

我們使用來自最新穩(wěn)定通道的 rustfmt 和 clippy 進(jìn)行代碼格式化和 linting。要確保正確設(shè)置這些工具并使用正確的配置運(yùn)行,請(qǐng)使用以下 make 目標(biāo):

# 格式化整個(gè)代碼庫(kù)
make format

# 在整個(gè)代碼庫(kù)上運(yùn)行 clippy
make lint

Python 和 C-ABI

潛在地,還需要將新功能添加到 Python 包中。這首先需要在 C ABI 中公開新功能。為此,請(qǐng)參閱 Relay C-ABI readme。

  • Relay C-ABI readme

https://getsentry.github.io/relay/relay_cabi/

我們強(qiáng)烈建議在 virtual environment 中開發(fā)和測(cè)試 python 包。更新和測(cè)試 ABI 后,確保 virtualenv 處于活動(dòng)狀態(tài)并安裝構(gòu)建原生庫(kù)的包。有兩種安裝方法:

# 安裝發(fā)布版本,推薦:
pip install --editable ./py

# 安裝調(diào)試版本,安裝速度更快,但運(yùn)行時(shí)慢得多:
RELAY_DEBUG=1 pip install --editable ./py

對(duì)于測(cè)試,我們使用無處不在的 pytest。同樣,確保您的 virtualenv 處于活動(dòng)狀態(tài)并且已安裝最新版本的原生庫(kù)。然后,運(yùn)行:

# 創(chuàng)建一個(gè)新的 virtualenv,安裝發(fā)布版本并運(yùn)行測(cè)試
make test-python

# 手動(dòng)運(yùn)行單個(gè)測(cè)試
.venv/bin/pytest py/tests -k <test_name>

開發(fā) Server

如果你安裝了 systemfd 和 cargo-watch,make devserver 命令可以自動(dòng)重新加載 Relay:

cargo install systemfd cargo-watch
make devserver

SSL

該存儲(chǔ)庫(kù)包含用于開發(fā)目的的 SSL-certificate + private key。它有兩種格式:一種是 (.pem, .cert) 對(duì),一種是 .pfx (PKCS #12) 文件。

密碼,.pfx 文件是 password。

與 Sentry 一起使用

要使用現(xiàn)有的 Sentry devserver、self-hosted Sentry 安裝或 Sentry SaaS 開發(fā) Relay,請(qǐng)將 .relay/config.yml 中的 upstream 配置為 Sentry server 的 URL。例如,在本地開發(fā)中將 relay.upstream 設(shè)置為 http://localhost:8000/。

要使用本地 development Sentry 測(cè)試 processing 模式,請(qǐng)使用以下配置:

relay:
# 指向您的 Sentry devserver URL:
upstream: http://localhost:8000/
# 監(jiān)聽 3000 以外的端口:
port: 3001
logging:
# 啟用完整的日志記錄和回溯:
level: trace
enable_backtraces: true
limits:
# 在 ^C 上加速 shutdown
shutdown_timeout: 0
processing:
# 啟用存儲(chǔ)規(guī)范化的 processing 模式并將數(shù)據(jù)發(fā)布到 Kafka:
enabled: true
kafka_config:
- { name: "bootstrap.servers", value: "127.0.0.1:9092" }
- { name: "message.max.bytes", value: 2097176 }
redis: "redis://127.0.0.1"

請(qǐng)注意,Sentry devserver 還在 processing 模式下在端口 3000 上以類似配置啟動(dòng) Relay。該 Relay 不會(huì)干擾您的開發(fā)構(gòu)建。為確保 SDK 發(fā)送到您的開發(fā)實(shí)例,請(qǐng)更新 DSN 中的端口:

??http://<key>@localhost:3001/<id>??

發(fā)布管理

我們使用 craft 來發(fā)布新版本。有兩個(gè)單獨(dú)的項(xiàng)目要發(fā)布:

  • Relay binary 從根文件夾中發(fā)布。在該目錄中運(yùn)行 craft prepare 和 craft publish 以分別創(chuàng)建發(fā)布版本并發(fā)布它。我們使用日歷版本控制并與 Sentry 協(xié)調(diào)發(fā)布。
  • Relay Python library 和 C-ABI 從 py/ 子文件夾中發(fā)布。切換到該目錄并運(yùn)行 craft prepare 和 craft publish。我們?cè)陂_發(fā)周期中使用語(yǔ)義版本控制和發(fā)布。
  • craft

https://github.com/getsentry/craft

  • 日歷化版本

https://calver.org

  • 語(yǔ)義版本控制

https://semver.org

變更日志說明

對(duì)于暴露給 Python package 的更改,請(qǐng)?jiān)?py/CHANGELOG.md 中添加一個(gè)條目。這包括但不限于事件規(guī)范化、PII 清理和協(xié)議。對(duì)于 Relay server 的更改,請(qǐng)?jiān)?CHANGELOG.md 的以下標(biāo)題下添加一個(gè)條目:

  • Features: 用于新的用戶可見功能。
  • Bug Fixes: 用于用戶可見的錯(cuò)誤修復(fù)。
  • Internal: 用于內(nèi)部操作中的功能和錯(cuò)誤修復(fù),尤其是 processing 模式。

在 changelog 條目中,請(qǐng)?zhí)砑又赶虼?PR 的鏈接(考慮更具描述性的消息):

- ${getCleanTitle()}. (${PR_LINK})

如果以上都不適用,您可以通過在 PR 描述中添加 #skip-changelog 來選擇退出。

責(zé)任編輯:武曉燕 來源: 黑客下午茶
相關(guān)推薦

2011-08-23 14:14:02

Oracle EBS二

2016-12-20 14:35:52

監(jiān)控報(bào)警系統(tǒng)經(jīng)驗(yàn)

2012-05-11 14:31:50

2017-04-14 09:03:00

RDD模塊Hbase

2020-10-29 15:13:55

數(shù)字科技金融行業(yè)互聯(lián)網(wǎng)

2012-06-12 16:45:57

PHP

2022-01-04 20:34:00

數(shù)據(jù)安全Relay

2017-03-24 21:26:26

代碼架構(gòu)Java

2022-01-05 20:16:52

Sentry Relay 數(shù)據(jù)安全

2022-01-08 15:08:17

項(xiàng)目配置Sentry

2022-01-09 21:46:22

安全數(shù)據(jù)Sentry

2011-08-05 12:36:01

2019-04-30 13:09:30

蘋果微軟KOL

2022-01-06 20:00:39

數(shù)據(jù)企業(yè)安全

2015-09-11 13:34:14

云計(jì)算云趨勢(shì)

2010-05-28 10:50:44

JavaGoogleVMWare

2023-05-06 12:08:26

2022-01-07 18:07:16

數(shù)據(jù)安全監(jiān)控

2021-07-07 23:25:18

RedisFlinkSQL

2021-11-17 18:38:32

avaScriptSDK調(diào)試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)