From 7378d618b1981c758d4bada03d82f36fefd691d7 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 16 Feb 2026 13:01:26 +0300 Subject: [PATCH] fc-server: update web UI to display extended build statuses Signed-off-by: NotAShelf Change-Id: I8cf767e7ed34153eedf6d1fd56a6c2016a6a6964 --- crates/server/src/routes/badges.rs | 15 ++++++++++++++- crates/server/src/routes/dashboard.rs | 21 ++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/crates/server/src/routes/badges.rs b/crates/server/src/routes/badges.rs index aded40e..bbcb64c 100644 --- a/crates/server/src/routes/badges.rs +++ b/crates/server/src/routes/badges.rs @@ -61,11 +61,24 @@ async fn build_badge( let (label, color) = match build { Some(b) => { match b.status { - fc_common::BuildStatus::Completed => ("passing", "#4c1"), + fc_common::BuildStatus::Succeeded => ("passing", "#4c1"), fc_common::BuildStatus::Failed => ("failing", "#e05d44"), fc_common::BuildStatus::Running => ("building", "#dfb317"), fc_common::BuildStatus::Pending => ("queued", "#dfb317"), fc_common::BuildStatus::Cancelled => ("cancelled", "#9f9f9f"), + fc_common::BuildStatus::DependencyFailed => ("dep failed", "#e05d44"), + fc_common::BuildStatus::Aborted => ("aborted", "#9f9f9f"), + fc_common::BuildStatus::FailedWithOutput => { + ("failed output", "#e05d44") + }, + fc_common::BuildStatus::Timeout => ("timeout", "#e05d44"), + fc_common::BuildStatus::CachedFailure => ("cached fail", "#e05d44"), + fc_common::BuildStatus::UnsupportedSystem => ("unsupported", "#9f9f9f"), + fc_common::BuildStatus::LogLimitExceeded => ("log limit", "#e05d44"), + fc_common::BuildStatus::NarSizeLimitExceeded => { + ("nar limit", "#e05d44") + }, + fc_common::BuildStatus::NonDeterministic => ("non-det", "#e05d44"), } }, None => ("not found", "#9f9f9f"), diff --git a/crates/server/src/routes/dashboard.rs b/crates/server/src/routes/dashboard.rs index 0882311..a2de337 100644 --- a/crates/server/src/routes/dashboard.rs +++ b/crates/server/src/routes/dashboard.rs @@ -207,11 +207,30 @@ fn eval_view_with_context( fn status_badge(s: &BuildStatus) -> (String, String) { match s { - BuildStatus::Completed => ("Completed".into(), "completed".into()), + BuildStatus::Succeeded => ("Succeeded".into(), "succeeded".into()), BuildStatus::Failed => ("Failed".into(), "failed".into()), BuildStatus::Running => ("Running".into(), "running".into()), BuildStatus::Pending => ("Pending".into(), "pending".into()), BuildStatus::Cancelled => ("Cancelled".into(), "cancelled".into()), + BuildStatus::DependencyFailed => { + ("Dependency Failed".into(), "failed".into()) + }, + BuildStatus::Aborted => ("Aborted".into(), "aborted".into()), + BuildStatus::FailedWithOutput => { + ("Failed w/ Output".into(), "failed".into()) + }, + BuildStatus::Timeout => ("Timeout".into(), "failed".into()), + BuildStatus::CachedFailure => ("Cached Failure".into(), "failed".into()), + BuildStatus::UnsupportedSystem => { + ("Unsupported System".into(), "skipped".into()) + }, + BuildStatus::LogLimitExceeded => ("Log Limit".into(), "failed".into()), + BuildStatus::NarSizeLimitExceeded => { + ("NAR Size Limit".into(), "failed".into()) + }, + BuildStatus::NonDeterministic => { + ("Non-deterministic".into(), "failed".into()) + }, } }