diff --git a/db/builder_db.ml b/db/builder_db.ml index f4c1600..8cb6c95 100644 --- a/db/builder_db.ml +++ b/db/builder_db.ml @@ -391,7 +391,7 @@ module Build = struct LIMIT 1 |} - let get_latest = + let get_latest_successful_with_binary = Caqti_request.find_opt Caqti_type.(tup2 (id `job) string) Caqti_type.(tup3 @@ -406,7 +406,7 @@ module Build = struct FROM build b LEFT JOIN build_artifact a ON b.main_binary = a.id - WHERE b.job = ?1 AND b.platform = ?2 + WHERE b.job = ?1 AND b.platform = ?2 AND b.result_code = 0 ORDER BY b.start_d DESC, b.start_ps DESC LIMIT 1 |} diff --git a/db/builder_db.mli b/db/builder_db.mli index 24cb4b7..da9f7d3 100644 --- a/db/builder_db.mli +++ b/db/builder_db.mli @@ -121,7 +121,7 @@ sig ([`job] id, Cstruct.t, [ `Many | `One | `Zero ]) Caqti_request.t val get_all_artifact_sha_by_platform : ([`job] id * string, Cstruct.t, [ `Many | `One | `Zero ]) Caqti_request.t - val get_latest : + val get_latest_successful_with_binary : ([`job] id * string, [`build] id * t * file option, [< `Many | `One | `Zero > `One `Zero ]) Caqti_request.t val get_latest_failed : diff --git a/lib/model.ml b/lib/model.ml index dc9b0ad..acb0f12 100644 --- a/lib/model.ml +++ b/lib/model.ml @@ -58,7 +58,7 @@ let build uuid (module Db : CONN) = not_found let build_with_main_binary job platform (module Db : CONN) = - Db.find_opt Builder_db.Build.get_latest (job, platform) >|= + Db.find_opt Builder_db.Build.get_latest_successful_with_binary (job, platform) >|= Option.map (fun (_id, build, file) -> (build, file)) let build_hash hash (module Db : CONN) = diff --git a/lib/views.ml b/lib/views.ml index d73e635..7f0bf58 100644 --- a/lib/views.ml +++ b/lib/views.ml @@ -509,7 +509,8 @@ let compare_builds job_left job_right let failed_builds ~start ~count builds = let build (job_name, build) = li [ - txtf "%s %a " job_name pp_platform (Some build.Builder_db.Build.platform); + check_icon build.Builder_db.Build.result; + txtf " %s %a " job_name pp_platform (Some build.platform); a ~a:[Fmt.kstr a_href "/job/%s/build/%a/" job_name Uuidm.pp build.uuid] [txtf "%a" pp_ptime build.start]; txtf " %a" Builder.pp_execution_result build.result;