Skip to content

Commit 434817d

Browse files
committed
feat: use current checked out commit hash in UploadMetadata
1 parent 3eda8b4 commit 434817d

12 files changed

Lines changed: 104 additions & 12 deletions

Cargo.lock

Lines changed: 66 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ base64 = "0.21.0"
3232
async-compression = { version = "0.4.5", features = ["tokio", "gzip"] }
3333
simplelog = { version = "0.12.1", default-features = false }
3434
tempfile = "3.10.0"
35+
git2 = "0.18.3"
3536

3637
[dev-dependencies]
3738
temp-env = { version = "0.3.6", features = ["async_closure"] }

src/ci_provider/buildkite/provider.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ impl CIProvider for BuildkiteProvider {
142142
Ok(ProviderMetadata {
143143
base_ref: self.base_ref.clone(),
144144
head_ref: self.head_ref.clone(),
145-
commit_hash: self.commit_hash.clone(),
146145
event: self.event.clone(),
147146
owner: self.owner.clone(),
148147
repository: self.repository.clone(),

src/ci_provider/buildkite/snapshots/codspeed_runner__ci_provider__buildkite__provider__tests__pull_request_provider_metadata.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
---
22
source: src/ci_provider/buildkite/provider.rs
3-
expression: upload_metadata
3+
expression: provider_metadata
44
---
55
{
66
"ref": "refs/pull/22/merge",
77
"headRef": "feat/codspeed-runner",
88
"baseRef": "main",
99
"owner": "my-org",
1010
"repository": "adrien-python-test",
11-
"commitHash": "abc123",
1211
"event": "pull_request",
1312
"ghData": null,
1413
"repositoryRootPath": "/buildkite/builds/7b10eca7600b-1/my-org/buildkite-test/"

src/ci_provider/github_actions/provider.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ impl CIProvider for GitHubActionsProvider {
132132
Ok(ProviderMetadata {
133133
base_ref: self.base_ref.clone(),
134134
head_ref: self.head_ref.clone(),
135-
commit_hash: self.commit_hash.clone(),
136135
event: self.event.clone(),
137136
gh_data: Some(self.gh_data.clone()),
138137
owner: self.owner.clone(),

src/ci_provider/github_actions/snapshots/codspeed_runner__ci_provider__github_actions__provider__tests__fork_pull_request_provider_metadata.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
---
22
source: src/ci_provider/github_actions/provider.rs
3-
expression: upload_metadata
3+
expression: provider_metadata
44
---
55
{
66
"ref": "refs/pull/22/merge",
77
"headRef": "fork-owner:feat/codspeed-runner",
88
"baseRef": "main",
99
"owner": "my-org",
1010
"repository": "adrien-python-test",
11-
"commitHash": "24809d9fca9ad0808a777bcbd807ecd5ec8a9100",
1211
"event": "pull_request",
1312
"ghData": {
1413
"runId": 6957110437,

src/ci_provider/github_actions/snapshots/codspeed_runner__ci_provider__github_actions__provider__tests__pull_request_provider_metadata.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
---
22
source: src/ci_provider/github_actions/provider.rs
3-
expression: upload_metadata
3+
expression: provider_metadata
44
---
55
{
66
"ref": "refs/pull/22/merge",
77
"headRef": "feat/codspeed-runner",
88
"baseRef": "main",
99
"owner": "my-org",
1010
"repository": "adrien-python-test",
11-
"commitHash": "24809d9fca9ad0808a777bcbd807ecd5ec8a9100",
1211
"event": "pull_request",
1312
"ghData": {
1413
"runId": 6957110437,

src/ci_provider/interfaces.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ pub struct ProviderMetadata {
99
pub base_ref: Option<String>,
1010
pub owner: String,
1111
pub repository: String,
12-
pub commit_hash: String,
1312
pub event: RunEvent,
1413
pub gh_data: Option<GhData>,
1514
pub repository_root_path: String,

src/ci_provider/provider.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use git2::Repository;
12
use simplelog::SharedLogger;
23

34
use crate::config::Config;
@@ -11,6 +12,20 @@ pub trait CIProviderDetector {
1112
fn detect() -> bool;
1213
}
1314

15+
fn get_commit_hash(repository_root_path: &str) -> Result<String> {
16+
let repo = Repository::open(repository_root_path).context(format!(
17+
"Failed to open repository at path: {}",
18+
repository_root_path
19+
))?;
20+
21+
let commit_hash = repo
22+
.revparse_single("HEAD")
23+
.context("Failed to get HEAD commit")?
24+
.id()
25+
.to_string();
26+
Ok(commit_hash)
27+
}
28+
1429
/// `CIProvider` is a trait that defines the necessary methods for a continuous integration provider.
1530
pub trait CIProvider {
1631
/// Returns the logger for the CI provider.
@@ -58,11 +73,14 @@ pub trait CIProvider {
5873
fn get_upload_metadata(&self, config: &Config, archive_hash: &str) -> Result<UploadMetadata> {
5974
let provider_metadata = self.get_provider_metadata()?;
6075

76+
let commit_hash = get_commit_hash(&provider_metadata.repository_root_path)?;
77+
6178
Ok(UploadMetadata {
6279
version: Some(2),
6380
tokenless: config.token.is_none(),
6481
provider_metadata,
6582
profile_md5: archive_hash.into(),
83+
commit_hash,
6684
runner: Runner {
6785
name: "codspeed-runner".into(),
6886
version: crate::VERSION.into(),
@@ -72,3 +90,15 @@ pub trait CIProvider {
7290
})
7391
}
7492
}
93+
94+
#[cfg(test)]
95+
mod tests {
96+
use super::*;
97+
98+
#[test]
99+
fn test_get_commit_hash() {
100+
let commit_hash = get_commit_hash(env!("CARGO_MANIFEST_DIR")).unwrap();
101+
// ensure that the commit hash is correct, thus it has 40 characters
102+
assert_eq!(commit_hash.len(), 40);
103+
}
104+
}

src/uploader/interfaces.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pub struct UploadMetadata {
1010
pub profile_md5: String,
1111
pub runner: Runner,
1212
pub platform: String,
13+
pub commit_hash: String,
1314
#[serde(flatten)]
1415
pub provider_metadata: ProviderMetadata,
1516
}

0 commit comments

Comments
 (0)