網(wǎng)站首頁 編程語言 正文
開發(fā)
要構(gòu)建 Relay
,我們需要最新的穩(wěn)定版 Rust
。crate
被拆分為具有多個(gè)功能的工作區(qū),因此在運(yùn)行構(gòu)建或運(yùn)行測試時(shí),請始終確保傳遞 --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ǔ)庫包含配置代碼樣式、linter
和有用功能的設(shè)置文件。 首次打開項(xiàng)目時(shí),請確保 安裝推薦擴(kuò)展,因?yàn)樗鼈儗⒃试S編輯器在編碼期間提供幫助。
存儲(chǔ)庫的根目錄包含一個(gè) Makefile
,其中包含用于開發(fā)的有用命令:
-
make check
: 運(yùn)行代碼格式檢查和linter
。這在打開pull request
之前很有用。 -
make test
: 運(yùn)行單元測試、集成測試和 Python 包測試(有關(guān)更多信息,請參見下文)。 -
make all
: 運(yùn)行所有檢查和測試。這會(huì)運(yùn)行在CI
中也執(zhí)行的大多數(shù)任務(wù)。 -
make clean
: 刪除所有構(gòu)建工件、virtualenv
和緩存文件。
集成測試要求 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
的最簡單方法是使用 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)。請注意,發(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
支持。
要啟用功能,請將其傳遞給 cargo
調(diào)用。例如,要在啟用了 processing
功能的情況下跨所有 workspace crates
運(yùn)行測試,請運(yùn)行:
cargo run --features=processing
測試
測試套件包括單元測試、集成測試套件和 Python
包的單獨(dú)測試套件。單元測試是作為 Rust crates
的一部分實(shí)現(xiàn)的,可以通過以下方式運(yùn)行:
# 測試默認(rèn)功能 make test-rust # 為所有功能運(yùn)行 Rust 測試 make test-rust-all
集成測試套件需要 python
。默認(rèn)情況下,集成測試套件將創(chuàng)建一個(gè) virtualenv
,構(gòu)建啟用處理的 Relay
二進(jìn)制文件,并運(yùn)行一組集成測試:
# 創(chuàng)建一個(gè)新的 virtualenv,構(gòu)建 Relay 并運(yùn)行集成測試 make test-integration # 手動(dòng)構(gòu)建和運(yùn)行單個(gè)測試 make build .venv/bin/pytest tests/integration -k
Linting
我們使用來自最新穩(wěn)定通道的 rustfmt
和 clippy
進(jìn)行代碼格式化和 linting
。 要確保正確設(shè)置這些工具并使用正確的配置運(yùn)行,請使用以下 make
目標(biāo):
# 格式化整個(gè)代碼庫 make format # 在整個(gè)代碼庫上運(yùn)行 clippy make lint
Python 和 C-ABI
潛在地,還需要將新功能添加到 Python
包中。這首先需要在 C ABI
中公開新功能。 為此,請參閱 Relay C-ABI readme。
- Relay C-ABI readme
https://getsentry.github.io/relay/relay_cabi/
我們強(qiáng)烈建議在 virtual
environment 中開發(fā)和測試 python
包。更新和測試 ABI
后,確保 virtualenv
處于活動(dòng)狀態(tài)并安裝構(gòu)建原生庫的包。有兩種安裝方法:
# 安裝發(fā)布版本,推薦: pip install --editable ./py # 安裝調(diào)試版本,安裝速度更快,但運(yùn)行時(shí)慢得多: RELAY_DEBUG=1 pip install --editable ./py
對于測試,我們使用無處不在的 pytest
。 同樣,確保您的 virtualenv
處于活動(dòng)狀態(tài)并且已安裝最新版本的原生庫。然后,運(yùn)行:
# 創(chuàng)建一個(gè)新的 virtualenv,安裝發(fā)布版本并運(yùn)行測試 make test-python # 手動(dòng)運(yùn)行單個(gè)測試 .venv/bin/pytest py/tests -k
開發(fā) Server
如果你安裝了 systemfd
和 cargo-watch
,make devserver
命令可以自動(dòng)重新加載 Relay
:
cargo install systemfd cargo-watch make devserver
SSL
該存儲(chǔ)庫包含用于開發(fā)目的的 SSL-certificate
+ private key
。它有兩種格式:一種是 (.pem
, .cert
) 對,一種是 .pfx
(PKCS #12
) 文件。
密碼,.pfx
文件是 password
。
與 Sentry 一起使用
要使用現(xiàn)有的 Sentry devserver
、self-hosted Sentry
安裝或 Sentry SaaS
開發(fā) Relay
,請將 .relay/config.yml
中的 upstream
配置為 Sentry server
的 URL
。 例如,在本地開發(fā)中將 relay.upstream
設(shè)置為 http://localhost:8000/
。
要使用本地 development Sentry
測試 processing
模式,請使用以下配置:
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"
請注意,Sentry devserver
還在 processing
模式下在端口 3000
上以類似配置啟動(dòng) Relay
。 該 Relay
不會(huì)干擾您的開發(fā)構(gòu)建。為確保 SDK
發(fā)送到您的開發(fā)實(shí)例,請更新 DSN
中的端口:
@localhost:3001/
" target="_blank">http:// @localhost:3001/
發(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
。我們在開發(fā)周期中使用語義版本控制和發(fā)布。
- craft
https://github.com/getsentry/craft
- 日歷化版本
https://calver.org
- 語義版本控制
https://semver.org
變更日志說明
對于暴露給 Python package 的更改,請?jiān)?py/CHANGELOG.md
中添加一個(gè)條目。這包括但不限于事件規(guī)范化
、PII 清理
和協(xié)議
。對于 Relay server 的更改,請?jiān)?CHANGELOG.md
的以下標(biāo)題下添加一個(gè)條目:
-
Features
: 用于新的用戶可見功能。 -
Bug Fixes
: 用于用戶可見的錯(cuò)誤修復(fù)。 -
Internal
: 用于內(nèi)部操作中的功能和錯(cuò)誤修復(fù),尤其是processing
模式。
在 changelog
條目中,請?zhí)砑又赶虼?PR
的鏈接(考慮更具描述性的消息):
- ${getCleanTitle()}. (${PR_LINK})
如果以上都不適用,您可以通過在 PR
描述中添加 #skip-changelog
來選擇退出。
更多
Sentry Web 前端監(jiān)控 - 最佳實(shí)踐(官方教程)
Sentry 后端監(jiān)控 - 最佳實(shí)踐(官方教程)
原文鏈接:https://www.cnblogs.com/hacker-linner/p/16003350.html
相關(guān)推薦
- 2022-07-14 React?Native采用Hermes熱更新打包方案詳解_React
- 2023-01-07 基于Go語言實(shí)現(xiàn)選擇排序算法及優(yōu)化_Golang
- 2023-08-13 Spring Security 構(gòu)建基于 JWT 的登錄認(rèn)證
- 2022-07-29 pytest?fixtures函數(shù)及測試函數(shù)的參數(shù)化解讀_python
- 2022-06-02 Android?實(shí)例代碼帶你掌握FrameLayout_Android
- 2024-03-03 layui 表格select下拉不顯示全的問題
- 2022-05-01 Python類的常用高級函數(shù)匯總_python
- 2022-09-08 Python中ImportError錯(cuò)誤的詳細(xì)解決方法_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支