From 947a0a695ba3dbf7932ff5856895ff922c9f2806 Mon Sep 17 00:00:00 2001
From: Svyatoslav Nikolsky <svyatonik@gmail.com>
Date: Tue, 31 Jan 2023 11:49:40 +0300
Subject: [PATCH] Use GitLab env vars to get git commit (#1831)

* use GitLab env vars to get git commit

* compile_error to test it

* Revert "compile_error to test it"

This reverts commit 67d4782298d3cdfbe1a28231042bba6444316e8a.
---
 bridges/relays/bin-substrate/src/cli/mod.rs | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/bridges/relays/bin-substrate/src/cli/mod.rs b/bridges/relays/bin-substrate/src/cli/mod.rs
index 17d0262b21b..a5b90744067 100644
--- a/bridges/relays/bin-substrate/src/cli/mod.rs
+++ b/bridges/relays/bin-substrate/src/cli/mod.rs
@@ -260,6 +260,22 @@ pub struct PrometheusParams {
 #[derive(BuildInfo)]
 struct SubstrateRelayBuildInfo;
 
+impl SubstrateRelayBuildInfo {
+	/// Get git commit in form `<short-sha-(clean|dirty)>`.
+	pub fn get_git_commit() -> String {
+		// on gitlab we use images without git installed, so we can't use `rbtag` there
+		// locally we don't have `CI_*` env variables, so we can't rely on them
+		// => we are using `CI_*` env variables or else `rbtag`
+		let maybe_sha_from_ci = option_env!("CI_COMMIT_SHORT_SHA");
+		maybe_sha_from_ci
+			.map(|short_sha| {
+				// we assume that on CI the copy is always clean
+				format!("{short_sha}-clean")
+			})
+			.unwrap_or_else(|| SubstrateRelayBuildInfo.get_build_commit().into())
+	}
+}
+
 impl PrometheusParams {
 	/// Tries to convert CLI metrics params into metrics params, used by the relay.
 	pub fn into_metrics_params(self) -> anyhow::Result<relay_utils::metrics::MetricsParams> {
@@ -273,11 +289,11 @@ impl PrometheusParams {
 		};
 
 		let relay_version = option_env!("CARGO_PKG_VERSION").unwrap_or("unknown");
-		let relay_commit = SubstrateRelayBuildInfo.get_build_commit();
+		let relay_commit = SubstrateRelayBuildInfo::get_git_commit();
 		relay_utils::metrics::MetricsParams::new(
 			metrics_address,
 			relay_version.into(),
-			relay_commit.into(),
+			relay_commit,
 		)
 		.map_err(|e| anyhow::format_err!("{:?}", e))
 	}
-- 
GitLab