Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions lib/bencher_comment/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,30 @@ impl ReportComment {

pub fn human(&self) -> String {
let mut text = String::new();
self.human_report_link(&mut text);
self.human_no_benchmarks(&mut text);
self.human_results_list(&mut text);
self.human_alerts_list(&mut text);
self.human_unclaimed(&mut text);
text
}

fn human_report_link(&self, text: &mut String) {
let url = self.resource_url_human(Resource::Report(self.json_report.uuid));
text.push_str(&format!("View report: {url}"));
}

fn human_no_benchmarks(&self, text: &mut String) {
if self.benchmark_count == 0 {
text.push_str("\n\nWARNING: No benchmarks found!");
}
}

fn human_results_list(&self, text: &mut String) {
text.push_str("View results:");
if self.benchmark_count == 0 {
return;
}
text.push_str("\n\nView results:");
for (i, iteration) in self.json_report.results.iter().enumerate() {
if self.multiple_iterations {
if i != 0 {
Expand Down Expand Up @@ -658,7 +674,15 @@ impl ReportComment {
false
}

fn resource_url_human(&self, resource: Resource) -> Url {
self.resource_url_inner(resource, false)
}

fn resource_url(&self, resource: Resource) -> Url {
self.resource_url_inner(resource, true)
}

fn resource_url_inner(&self, resource: Resource, utm: bool) -> Url {
let url = self.console_url.clone();
let query_param = resource.query_param();
let path = if self.public_links {
Expand All @@ -682,7 +706,7 @@ impl ReportComment {
url.query_pairs_mut().append_pair(key, &value);
}

if self.is_bencher_cloud() {
if utm && self.is_bencher_cloud() {
url.query_pairs_mut()
.append_pair("utm_medium", "referral")
.append_pair("utm_source", &self.source)
Expand Down
8 changes: 7 additions & 1 deletion services/cli/src/bencher/sub/run/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ struct Job {
timeout: Option<bencher_json::Timeout>,
build_time: bool,
poll_interval: bencher_json::PollTimeout,
detach: bool,
}

impl TryFrom<CliRun> for Run {
Expand Down Expand Up @@ -128,7 +129,8 @@ impl TryFrom<CliRun> for Run {
env: job.env.map(bencher_parser::parse_env),
timeout: job.job_timeout,
build_time,
poll_interval: job.poll_interval.unwrap_or(*DEFAULT_POLL_INTERVAL),
poll_interval: job.job_poll_interval.unwrap_or(*DEFAULT_POLL_INTERVAL),
detach: job.detach,
})
} else {
None
Expand Down Expand Up @@ -227,6 +229,10 @@ impl Run {

#[cfg(feature = "plus")]
if let Some(job_uuid) = json_report.job {
if self.job.as_ref().is_some_and(|j| j.detach) {
cli_eprintln_quietable!(self.log, "Remote job submitted successfully: {job_uuid}");
return self.display_and_check_alerts(json_report).await;
}
return self.poll_job(json_report, job_uuid).await;
}

Expand Down
9 changes: 7 additions & 2 deletions services/cli/src/parser/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,11 @@ pub struct CliRunJob {
pub job_timeout: Option<bencher_json::Timeout>,

/// Poll interval in seconds when waiting for remote job completion (requires: --image)
#[clap(long, requires = "image")]
pub poll_interval: Option<bencher_json::PollTimeout>,
// TODO remove in due time
#[clap(long, alias = "poll-interval", requires = "image")]
pub job_poll_interval: Option<bencher_json::PollTimeout>,

/// Detach after submitting the remote job, without waiting for completion (requires: --image).
#[clap(long, requires = "image", conflicts_with = "job_poll_interval")]
pub detach: bool,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus: Nach dem Absenden des Remote-Jobs trennen, ohne auf den Abschluss zu warten.
Erforderlich: `--image`
Konflikte mit: `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus: Setzen Sie das Abfrageintervall in Sekunden beim Warten auf den Abschluss des Remote-Jobs.
Erforderlich: `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus: Detach after submitting the remote job, without waiting for completion.
Requires: `--image`
Conflicts with: `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus: Set the poll interval in seconds when waiting for remote job completion.
Requires: `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus: Desconectarse después de enviar el job remoto, sin esperar a que finalice.
Requiere: `--image`
Conflictos con: `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus: Establezca el intervalo de sondeo en segundos al esperar la finalización del job remoto.
Requiere: `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus : Se détacher après avoir soumis le job distant, sans attendre l'achèvement.
Requiert : `--image`
Conflits avec : `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus : Définissez l'intervalle de sondage en secondes lors de l'attente de l'achèvement du job distant.
Requiert : `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus: リモートジョブを送信した後、完了を待たずにデタッチします。
必要条件: `--image`
競合: `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus: リモートジョブの完了を待つ際のポーリング間隔を秒単位で設定します。
必要条件: `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus: 원격 작업을 제출한 후 완료를 기다리지 않고 분리합니다.
필수 조건: `--image`
충돌: `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus: 원격 작업 완료를 대기할 때 폴링 간격을 초 단위로 설정합니다.
필수 조건: `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus: Desconectar após enviar o job remoto, sem esperar pela conclusão.
Requer: `--image`
Conflita com: `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus: Defina o intervalo de sondagem em segundos ao aguardar a conclusão do job remoto.
Requer: `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus: Отключиться после отправки удалённого задания, не дожидаясь завершения.
Требуется: `--image`
Конфликтует с: `--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus: Установите интервал опроса в секундах при ожидании завершения удалённого задания.
Требуется: `--image`
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### `--detach`

<br />

➕ Bencher Plus:提交远程作业后分离,不等待完成。
要求:`--image`
冲突:`--job-poll-interval`
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### `--job-poll-interval <SECONDS>`

<br />

➕ Bencher Plus:设置等待远程作业完成时的轮询间隔(秒)。
要求:`--image`
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
## Pending `v0.6.1`
- Buffer OCI upload network frames into configurable S3 chunks (`registry.data_store.chunk_size`, default 5 MB) to reduce S3 operations during Docker push
- Add `idempotency_key` to `bencher run` to deduplicate retried submissions
- Rename `--poll-interval` to `--job-poll-interval` for `bencher run` (`--poll-interval` is still supported as a deprecated alias)
- Add `--detach` flag to `bencher run` to skip waiting for remote job completion

## `v0.6.0`
- **BREAKING CHANGE** Update Bencher Metric Format (BMF) to accept UUID, slug, or name for the Benchmark identifier
Expand Down
10 changes: 10 additions & 0 deletions services/console/src/content/docs-explanation/de/bencher-run.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import Image from "../../../chunks/docs-explanation/bencher-run/de/image.mdx";
import Entrypoint from "../../../chunks/docs-explanation/bencher-run/de/entrypoint.mdx";
import Env from "../../../chunks/docs-explanation/bencher-run/de/env.mdx";
import JobTimeout from "../../../chunks/docs-explanation/bencher-run/de/job-timeout.mdx";
import JobPollInterval from "../../../chunks/docs-explanation/bencher-run/de/job-poll-interval.mdx";
import Detach from "../../../chunks/docs-explanation/bencher-run/de/detach.mdx";
import CiOnTheFly from "../../../chunks/docs-explanation/bencher-run/de/ci-on-the-fly.mdx";
import Token from "../../../chunks/docs-explanation/bencher-run/de/token.mdx";
import BranchSelection from "../../../chunks/docs-explanation/bencher-run/de/branch-selection.mdx";
Expand Down Expand Up @@ -75,6 +77,14 @@ import Help from "../../../chunks/docs-explanation/bencher-run/de/help.mdx";

<br />

<JobPollInterval />

<br />

<Detach />

<br />

<CiOnTheFly />

<br />
Expand Down
10 changes: 10 additions & 0 deletions services/console/src/content/docs-explanation/en/bencher-run.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import Image from "../../../chunks/docs-explanation/bencher-run/en/image.mdx";
import Entrypoint from "../../../chunks/docs-explanation/bencher-run/en/entrypoint.mdx";
import Env from "../../../chunks/docs-explanation/bencher-run/en/env.mdx";
import JobTimeout from "../../../chunks/docs-explanation/bencher-run/en/job-timeout.mdx";
import JobPollInterval from "../../../chunks/docs-explanation/bencher-run/en/job-poll-interval.mdx";
import Detach from "../../../chunks/docs-explanation/bencher-run/en/detach.mdx";
import CiOnTheFly from "../../../chunks/docs-explanation/bencher-run/en/ci-on-the-fly.mdx";
import Token from "../../../chunks/docs-explanation/bencher-run/en/token.mdx";
import BranchSelection from "../../../chunks/docs-explanation/bencher-run/en/branch-selection.mdx";
Expand Down Expand Up @@ -75,6 +77,14 @@ import Help from "../../../chunks/docs-explanation/bencher-run/en/help.mdx";

<br />

<JobPollInterval />

<br />

<Detach />

<br />

<CiOnTheFly />

<br />
Expand Down
10 changes: 10 additions & 0 deletions services/console/src/content/docs-explanation/es/bencher-run.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import Image from "../../../chunks/docs-explanation/bencher-run/es/image.mdx";
import Entrypoint from "../../../chunks/docs-explanation/bencher-run/es/entrypoint.mdx";
import Env from "../../../chunks/docs-explanation/bencher-run/es/env.mdx";
import JobTimeout from "../../../chunks/docs-explanation/bencher-run/es/job-timeout.mdx";
import JobPollInterval from "../../../chunks/docs-explanation/bencher-run/es/job-poll-interval.mdx";
import Detach from "../../../chunks/docs-explanation/bencher-run/es/detach.mdx";
import CiOnTheFly from "../../../chunks/docs-explanation/bencher-run/es/ci-on-the-fly.mdx";
import Token from "../../../chunks/docs-explanation/bencher-run/es/token.mdx";
import BranchSelection from "../../../chunks/docs-explanation/bencher-run/es/branch-selection.mdx";
Expand Down Expand Up @@ -75,6 +77,14 @@ import Help from "../../../chunks/docs-explanation/bencher-run/es/help.mdx";

<br />

<JobPollInterval />

<br />

<Detach />

<br />

<CiOnTheFly />

<br />
Expand Down
10 changes: 10 additions & 0 deletions services/console/src/content/docs-explanation/fr/bencher-run.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import Image from "../../../chunks/docs-explanation/bencher-run/fr/image.mdx";
import Entrypoint from "../../../chunks/docs-explanation/bencher-run/fr/entrypoint.mdx";
import Env from "../../../chunks/docs-explanation/bencher-run/fr/env.mdx";
import JobTimeout from "../../../chunks/docs-explanation/bencher-run/fr/job-timeout.mdx";
import JobPollInterval from "../../../chunks/docs-explanation/bencher-run/fr/job-poll-interval.mdx";
import Detach from "../../../chunks/docs-explanation/bencher-run/fr/detach.mdx";
import CiOnTheFly from "../../../chunks/docs-explanation/bencher-run/fr/ci-on-the-fly.mdx";
import Token from "../../../chunks/docs-explanation/bencher-run/fr/token.mdx";
import BranchSelection from "../../../chunks/docs-explanation/bencher-run/fr/branch-selection.mdx";
Expand Down Expand Up @@ -75,6 +77,14 @@ import Help from "../../../chunks/docs-explanation/bencher-run/fr/help.mdx";

<br />

<JobPollInterval />

<br />

<Detach />

<br />

<CiOnTheFly />

<br />
Expand Down
10 changes: 10 additions & 0 deletions services/console/src/content/docs-explanation/ja/bencher-run.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import Image from "../../../chunks/docs-explanation/bencher-run/ja/image.mdx";
import Entrypoint from "../../../chunks/docs-explanation/bencher-run/ja/entrypoint.mdx";
import Env from "../../../chunks/docs-explanation/bencher-run/ja/env.mdx";
import JobTimeout from "../../../chunks/docs-explanation/bencher-run/ja/job-timeout.mdx";
import JobPollInterval from "../../../chunks/docs-explanation/bencher-run/ja/job-poll-interval.mdx";
import Detach from "../../../chunks/docs-explanation/bencher-run/ja/detach.mdx";
import CiOnTheFly from "../../../chunks/docs-explanation/bencher-run/ja/ci-on-the-fly.mdx";
import Token from "../../../chunks/docs-explanation/bencher-run/ja/token.mdx";
import BranchSelection from "../../../chunks/docs-explanation/bencher-run/ja/branch-selection.mdx";
Expand Down Expand Up @@ -75,6 +77,14 @@ import Help from "../../../chunks/docs-explanation/bencher-run/ja/help.mdx";

<br />

<JobPollInterval />

<br />

<Detach />

<br />

<CiOnTheFly />

<br />
Expand Down
10 changes: 10 additions & 0 deletions services/console/src/content/docs-explanation/ko/bencher-run.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import Image from "../../../chunks/docs-explanation/bencher-run/ko/image.mdx";
import Entrypoint from "../../../chunks/docs-explanation/bencher-run/ko/entrypoint.mdx";
import Env from "../../../chunks/docs-explanation/bencher-run/ko/env.mdx";
import JobTimeout from "../../../chunks/docs-explanation/bencher-run/ko/job-timeout.mdx";
import JobPollInterval from "../../../chunks/docs-explanation/bencher-run/ko/job-poll-interval.mdx";
import Detach from "../../../chunks/docs-explanation/bencher-run/ko/detach.mdx";
import CiOnTheFly from "../../../chunks/docs-explanation/bencher-run/ko/ci-on-the-fly.mdx";
import Token from "../../../chunks/docs-explanation/bencher-run/ko/token.mdx";
import BranchSelection from "../../../chunks/docs-explanation/bencher-run/ko/branch-selection.mdx";
Expand Down Expand Up @@ -75,6 +77,14 @@ import Help from "../../../chunks/docs-explanation/bencher-run/ko/help.mdx";

<br />

<JobPollInterval />

<br />

<Detach />

<br />

<CiOnTheFly />

<br />
Expand Down
Loading
Loading