Skip to content

Commit 0f0cce3

Browse files
committed
feat: add platform_slug to upload metadata
1 parent be37513 commit 0f0cce3

11 files changed

Lines changed: 44 additions & 32 deletions

File tree

src/run/ci_provider/buildkite/provider.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::env;
33
use simplelog::SharedLogger;
44

55
use crate::prelude::*;
6+
use crate::run::ci_provider::interfaces::Platform;
67
use crate::run::helpers::{parse_git_remote, GitRemote};
78
use crate::run::{
89
ci_provider::{
@@ -127,8 +128,8 @@ impl CIProvider for BuildkiteProvider {
127128
"Buildkite"
128129
}
129130

130-
fn get_provider_slug(&self) -> &'static str {
131-
"buildkite"
131+
fn get_platform(&self) -> Platform {
132+
Platform::Buildkite
132133
}
133134

134135
fn get_ci_provider_metadata(&self) -> Result<CIProviderMetadata> {

src/run/ci_provider/github_actions/provider.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use simplelog::SharedLogger;
55
use std::{env, fs};
66

77
use crate::prelude::*;
8+
use crate::run::ci_provider::interfaces::Platform;
89
use crate::run::{
910
ci_provider::{
1011
interfaces::{CIProviderMetadata, GhData, RepositoryProvider, RunEvent, Sender},
@@ -128,8 +129,8 @@ impl CIProvider for GitHubActionsProvider {
128129
"GitHub Actions"
129130
}
130131

131-
fn get_provider_slug(&self) -> &'static str {
132-
"github-actions"
132+
fn get_platform(&self) -> Platform {
133+
Platform::GithubActions
133134
}
134135

135136
fn get_ci_provider_metadata(&self) -> Result<CIProviderMetadata> {

src/run/ci_provider/gitlab_ci/provider.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::env;
33

44
use crate::prelude::*;
55
use crate::run::ci_provider::interfaces::{
6-
CIProviderMetadata, GlData, RepositoryProvider, RunEvent, Sender,
6+
CIProviderMetadata, GlData, Platform, RepositoryProvider, RunEvent, Sender,
77
};
88
use crate::run::ci_provider::provider::CIProviderDetector;
99
use crate::run::ci_provider::CIProvider;
@@ -148,8 +148,8 @@ impl CIProvider for GitLabCIProvider {
148148
"GitLab CI"
149149
}
150150

151-
fn get_provider_slug(&self) -> &'static str {
152-
"gitlab-ci"
151+
fn get_platform(&self) -> Platform {
152+
Platform::GitlabCi
153153
}
154154

155155
fn get_ci_provider_metadata(&self) -> Result<CIProviderMetadata> {

src/run/ci_provider/interfaces.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ pub enum RepositoryProvider {
77
GitHub,
88
}
99

10+
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
11+
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
12+
pub enum Platform {
13+
GithubActions,
14+
GitlabCi,
15+
Buildkite,
16+
Local,
17+
}
18+
1019
#[derive(Deserialize, Serialize, Debug)]
1120
#[serde(rename_all = "camelCase")]
1221
pub struct CIProviderMetadata {

src/run/ci_provider/local/provider.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use simplelog::SharedLogger;
33

44
use crate::local_logger::get_local_logger;
55
use crate::prelude::*;
6+
use crate::run::ci_provider::interfaces::Platform;
67
use crate::run::helpers::{parse_git_remote, GitRemote};
78
use crate::run::{
89
ci_provider::{
@@ -117,8 +118,8 @@ impl CIProvider for LocalProvider {
117118
"Local"
118119
}
119120

120-
fn get_provider_slug(&self) -> &'static str {
121-
"local"
121+
fn get_platform(&self) -> Platform {
122+
Platform::Local
122123
}
123124

124125
fn get_ci_provider_metadata(&self) -> Result<CIProviderMetadata> {

src/run/ci_provider/provider.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::run::config::Config;
77
use crate::run::runner::ExecutorName;
88
use crate::run::uploader::{Runner, UploadMetadata};
99

10-
use super::interfaces::{CIProviderMetadata, RepositoryProvider};
10+
use super::interfaces::{CIProviderMetadata, Platform, RepositoryProvider};
1111

1212
pub trait CIProviderDetector {
1313
/// Detects if the current environment is running inside the CI provider.
@@ -30,6 +30,8 @@ fn get_commit_hash(repository_root_path: &str) -> Result<String> {
3030
}
3131

3232
/// `CIProvider` is a trait that defines the necessary methods for a continuous integration provider.
33+
///
34+
/// In other parts of the application, this may also be referred as `Platform`.
3335
pub trait CIProvider {
3436
/// Returns the logger for the CI provider.
3537
fn get_logger(&self) -> Box<dyn SharedLogger>;
@@ -47,15 +49,8 @@ pub trait CIProvider {
4749
/// ```
4850
fn get_provider_name(&self) -> &'static str;
4951

50-
/// Returns the slug of the CI provider.
51-
///
52-
/// # Example
53-
///
54-
/// ```
55-
/// let provider = MyCIProvider::new();
56-
/// assert_eq!(provider.get_provider_slug(), "my-ci-provider");
57-
/// ```
58-
fn get_provider_slug(&self) -> &'static str;
52+
/// Returns the platform of the CI Provider
53+
fn get_platform(&self) -> Platform;
5954

6055
/// Returns the metadata related to the CI provider.
6156
fn get_ci_provider_metadata(&self) -> Result<CIProviderMetadata>;
@@ -101,7 +96,7 @@ pub trait CIProvider {
10196
executor: executor_name,
10297
system_info: system_info.clone(),
10398
},
104-
platform: self.get_provider_slug().into(),
99+
platform: self.get_platform(),
105100
})
106101
}
107102
}

src/run/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::prelude::*;
44
use crate::run::{config::Config, logger::Logger};
55
use crate::VERSION;
66
use check_system::SystemInfo;
7+
use ci_provider::interfaces::Platform;
78
use clap::Args;
89
use instruments::mongo_tracer::MongoTracer;
910
use runner::get_run_data;
@@ -100,12 +101,12 @@ pub async fn run(args: RunArgs, api_client: &CodSpeedAPIClient) -> Result<()> {
100101
let codspeed_config = CodSpeedConfig::load()?;
101102
let logger = Logger::new(&provider)?;
102103

103-
if provider.get_provider_slug() != "local" {
104+
if provider.get_platform() != Platform::Local {
104105
show_banner();
105106
}
106107
debug!("config: {:#?}", config);
107108

108-
if provider.get_provider_slug() == "local" {
109+
if provider.get_platform() == Platform::Local {
109110
if codspeed_config.auth.token.is_none() {
110111
bail!("You have to authenticate the CLI first. Run `codspeed auth login`.");
111112
}
@@ -157,7 +158,7 @@ pub async fn run(args: RunArgs, api_client: &CodSpeedAPIClient) -> Result<()> {
157158
uploader::upload(&config, &system_info, &provider, &run_data, executor.name()).await?;
158159
end_group!();
159160

160-
if provider.get_provider_slug() == "local" {
161+
if provider.get_platform() == Platform::Local {
161162
start_group!("Fetching the results");
162163
poll_results::poll_results(api_client, &provider, upload_result.run_id).await?;
163164
end_group!();

src/run/uploader/interfaces.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize};
22

33
use crate::run::{
44
check_system::SystemInfo,
5-
ci_provider::interfaces::{CIProviderMetadata, RepositoryProvider},
5+
ci_provider::interfaces::{CIProviderMetadata, Platform, RepositoryProvider},
66
instruments::InstrumentName,
77
runner::ExecutorName,
88
};
@@ -15,7 +15,8 @@ pub struct UploadMetadata {
1515
pub tokenless: bool,
1616
pub profile_md5: String,
1717
pub runner: Runner,
18-
pub platform: String,
18+
#[serde(rename = "platformSlug")]
19+
pub platform: Platform,
1920
pub commit_hash: String,
2021
#[serde(flatten)]
2122
pub ci_provider_metadata: CIProviderMetadata,

src/run/uploader/snapshots/codspeed__run__uploader__upload_metadata__tests__get_metadata_hash.snap renamed to src/run/uploader/snapshots/codspeed__run__uploader__upload_metadata__tests__get_metadata_hash-2.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ expression: upload_metadata
2525
"cpuCores": 2,
2626
"totalMemoryGb": 8
2727
},
28-
"platform": "github-actions",
28+
"platformSlug": "GITHUB_ACTIONS",
2929
"commitHash": "5bd77cb0da72bef094893ed45fb793ff16ecfbe3",
3030
"ref": "refs/pull/29/merge",
3131
"headRef": "chore/native-action-runner",

src/run/uploader/upload.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::run::ci_provider::interfaces::Platform;
12
use crate::run::runner::ExecutorName;
23
use crate::run::{
34
check_system::SystemInfo, ci_provider::CIProvider, config::Config, runner::RunData,
@@ -51,7 +52,7 @@ async fn retrieve_upload_data(
5152
.map(|body| body.error)
5253
.unwrap_or(text);
5354
if status == StatusCode::UNAUTHORIZED {
54-
let additional_message = if upload_metadata.platform == "local" {
55+
let additional_message = if upload_metadata.platform == Platform::Local {
5556
"Run `codspeed auth login` to authenticate the CLI"
5657
} else {
5758
"Check that CODSPEED_TOKEN is set and has the correct value"

0 commit comments

Comments
 (0)