diff --git a/src/setup/sentry_config.rs b/src/setup/sentry_config.rs index 4a59856670..8f779e5dd2 100644 --- a/src/setup/sentry_config.rs +++ b/src/setup/sentry_config.rs @@ -9,8 +9,14 @@ pub struct SentryConfig { impl SentryConfig { pub fn init(&self) -> sentry::internals::ClientInitGuard { - let guard = sentry::init(self); + let version = get_version!(); + let guard = sentry::init(self.build_sentry_client_options(&version)); if guard.is_enabled() { + sentry::configure_scope(|scope| { + scope.set_tag("release.pre", version.is_pre()); + scope.set_tag("release.dirty", version.is_dirty()); + }); + sentry::integrations::panic::register_panic_handler(); info!(target: "sentry", "**Notice**: \ The ckb process will send stack trace to sentry on Rust panics. \ @@ -22,12 +28,8 @@ impl SentryConfig { guard } -} - -impl<'a> Into for &'a SentryConfig { - fn into(self) -> sentry::ClientOptions { - let version = get_version!(); + fn build_sentry_client_options(&self, version: &Version) -> sentry::ClientOptions { sentry::ClientOptions { dsn: self.dsn.parse().ok(), release: Some(version.long().into()), diff --git a/util/build-info/src/lib.rs b/util/build-info/src/lib.rs index eacce8feca..def611e6b3 100644 --- a/util/build-info/src/lib.rs +++ b/util/build-info/src/lib.rs @@ -59,6 +59,18 @@ impl Version { pub fn long(&self) -> String { format!("{}", self) } + + pub fn is_pre(&self) -> bool { + self.dash_pre != "" + } + + pub fn is_dirty(&self) -> bool { + if let Some(describe) = &self.commit_describe { + describe.ends_with("-dirty") + } else { + false + } + } } impl std::fmt::Display for Version { @@ -93,7 +105,7 @@ pub fn get_channel() -> Option { pub fn get_commit_describe() -> Option { std::process::Command::new("git") - .args(&["describe", "--dirty=dev"]) + .args(&["describe", "--dirty"]) .output() .ok() .and_then(|r| String::from_utf8(r.stdout).ok())