Include a "Build change" filter on the package derivations page
This helps determine what things a change broke or fixed for example.
This commit is contained in:
parent
31475374f7
commit
ce73e4448d
2 changed files with 64 additions and 14 deletions
|
|
@ -69,6 +69,17 @@
|
||||||
(make-invalid-query-parameter
|
(make-invalid-query-parameter
|
||||||
file-name "unknown derivation")))
|
file-name "unknown derivation")))
|
||||||
|
|
||||||
|
(define (parse-build-change val)
|
||||||
|
(or (if (member val '("broken" "fixed"
|
||||||
|
"still-working"
|
||||||
|
"still-failing"
|
||||||
|
"unknown"))
|
||||||
|
val
|
||||||
|
#f)
|
||||||
|
(make-invalid-query-parameter
|
||||||
|
val
|
||||||
|
"unknown build change value")))
|
||||||
|
|
||||||
(define (compare-controller request
|
(define (compare-controller request
|
||||||
method-and-path-components
|
method-and-path-components
|
||||||
mime-types
|
mime-types
|
||||||
|
|
@ -110,7 +121,8 @@
|
||||||
(target_commit ,parse-commit #:required)
|
(target_commit ,parse-commit #:required)
|
||||||
(system ,parse-system #:multi-value)
|
(system ,parse-system #:multi-value)
|
||||||
(target ,parse-target #:multi-value)
|
(target ,parse-target #:multi-value)
|
||||||
(build_status ,parse-build-status #:multi-value)))))
|
(build_status ,parse-build-status #:multi-value)
|
||||||
|
(build_change ,parse-build-change)))))
|
||||||
(render-compare/package-derivations mime-types
|
(render-compare/package-derivations mime-types
|
||||||
parsed-query-parameters)))
|
parsed-query-parameters)))
|
||||||
(('GET "compare-by-datetime" "package-derivations")
|
(('GET "compare-by-datetime" "package-derivations")
|
||||||
|
|
@ -124,7 +136,8 @@
|
||||||
(target_datetime ,parse-datetime #:required)
|
(target_datetime ,parse-datetime #:required)
|
||||||
(system ,parse-system #:multi-value)
|
(system ,parse-system #:multi-value)
|
||||||
(target ,parse-target #:multi-value)
|
(target ,parse-target #:multi-value)
|
||||||
(build_status ,parse-build-status #:multi-value)))
|
(build_status ,parse-build-status #:multi-value)
|
||||||
|
(build-change ,parse-build-change)))
|
||||||
'((base_commit base_datetime)
|
'((base_commit base_datetime)
|
||||||
(target_commit target_datetime)))))
|
(target_commit target_datetime)))))
|
||||||
(render-compare-by-datetime/package-derivations mime-types
|
(render-compare-by-datetime/package-derivations mime-types
|
||||||
|
|
@ -534,7 +547,10 @@
|
||||||
(let ((base-commit (assq-ref query-parameters 'base_commit))
|
(let ((base-commit (assq-ref query-parameters 'base_commit))
|
||||||
(target-commit (assq-ref query-parameters 'target_commit))
|
(target-commit (assq-ref query-parameters 'target_commit))
|
||||||
(systems (assq-ref query-parameters 'system))
|
(systems (assq-ref query-parameters 'system))
|
||||||
(targets (assq-ref query-parameters 'target)))
|
(targets (assq-ref query-parameters 'target))
|
||||||
|
(build-change (and=>
|
||||||
|
(assq-ref query-parameters 'build_change)
|
||||||
|
string->symbol)))
|
||||||
(letpar& ((data
|
(letpar& ((data
|
||||||
(with-thread-postgresql-connection
|
(with-thread-postgresql-connection
|
||||||
(lambda (conn)
|
(lambda (conn)
|
||||||
|
|
@ -543,7 +559,8 @@
|
||||||
(commit->revision-id conn base-commit)
|
(commit->revision-id conn base-commit)
|
||||||
(commit->revision-id conn target-commit)
|
(commit->revision-id conn target-commit)
|
||||||
#:systems systems
|
#:systems systems
|
||||||
#:targets targets))))
|
#:targets targets
|
||||||
|
#:build-change build-change))))
|
||||||
(build-server-urls
|
(build-server-urls
|
||||||
(with-thread-postgresql-connection
|
(with-thread-postgresql-connection
|
||||||
select-build-server-urls-by-id)))
|
select-build-server-urls-by-id)))
|
||||||
|
|
@ -561,8 +578,7 @@
|
||||||
mime-types)
|
mime-types)
|
||||||
((application/json)
|
((application/json)
|
||||||
(render-json
|
(render-json
|
||||||
derivation-changes
|
derivation-changes))
|
||||||
#:extra-headers http-headers-for-unchanging-content))
|
|
||||||
(else
|
(else
|
||||||
(letpar& ((systems
|
(letpar& ((systems
|
||||||
(with-thread-postgresql-connection
|
(with-thread-postgresql-connection
|
||||||
|
|
@ -577,8 +593,7 @@
|
||||||
(valid-targets->options targets)
|
(valid-targets->options targets)
|
||||||
build-status-strings
|
build-status-strings
|
||||||
build-server-urls
|
build-server-urls
|
||||||
derivation-changes)
|
derivation-changes))))))))))))
|
||||||
#:extra-headers http-headers-for-unchanging-content)))))))))))
|
|
||||||
|
|
||||||
(define (render-compare-by-datetime/package-derivations mime-types
|
(define (render-compare-by-datetime/package-derivations mime-types
|
||||||
query-parameters)
|
query-parameters)
|
||||||
|
|
@ -605,7 +620,10 @@
|
||||||
(target-branch (assq-ref query-parameters 'target_branch))
|
(target-branch (assq-ref query-parameters 'target_branch))
|
||||||
(target-datetime (assq-ref query-parameters 'target_datetime))
|
(target-datetime (assq-ref query-parameters 'target_datetime))
|
||||||
(systems (assq-ref query-parameters 'system))
|
(systems (assq-ref query-parameters 'system))
|
||||||
(targets (assq-ref query-parameters 'target)))
|
(targets (assq-ref query-parameters 'target))
|
||||||
|
(build-change (and=>
|
||||||
|
(assq-ref query-parameters 'build_change)
|
||||||
|
string->symbol)))
|
||||||
(letpar&
|
(letpar&
|
||||||
((base-revision-details
|
((base-revision-details
|
||||||
(with-thread-postgresql-connection
|
(with-thread-postgresql-connection
|
||||||
|
|
@ -628,7 +646,8 @@
|
||||||
(first base-revision-details)
|
(first base-revision-details)
|
||||||
(first target-revision-details)
|
(first target-revision-details)
|
||||||
#:systems systems
|
#:systems systems
|
||||||
#:targets targets)))))
|
#:targets targets
|
||||||
|
#:build-change build-change)))))
|
||||||
(let ((names-and-versions
|
(let ((names-and-versions
|
||||||
(package-derivation-data->names-and-versions data)))
|
(package-derivation-data->names-and-versions data)))
|
||||||
(let-values
|
(let-values
|
||||||
|
|
@ -643,8 +662,7 @@
|
||||||
mime-types)
|
mime-types)
|
||||||
((application/json)
|
((application/json)
|
||||||
(render-json
|
(render-json
|
||||||
derivation-changes
|
derivation-changes))
|
||||||
#:extra-headers http-headers-for-unchanging-content))
|
|
||||||
(else
|
(else
|
||||||
(render-html
|
(render-html
|
||||||
#:sxml (compare-by-datetime/package-derivations
|
#:sxml (compare-by-datetime/package-derivations
|
||||||
|
|
@ -654,8 +672,7 @@
|
||||||
build-status-strings
|
build-status-strings
|
||||||
base-revision-details
|
base-revision-details
|
||||||
target-revision-details
|
target-revision-details
|
||||||
derivation-changes)
|
derivation-changes))))))))))))
|
||||||
#:extra-headers http-headers-for-unchanging-content)))))))))))
|
|
||||||
|
|
||||||
(define (render-compare/packages mime-types
|
(define (render-compare/packages mime-types
|
||||||
query-parameters)
|
query-parameters)
|
||||||
|
|
|
||||||
|
|
@ -652,6 +652,39 @@
|
||||||
#:options valid-targets
|
#:options valid-targets
|
||||||
#:help-text "Only include derivations that are build for this system."
|
#:help-text "Only include derivations that are build for this system."
|
||||||
#:font-family "monospace")
|
#:font-family "monospace")
|
||||||
|
,(form-horizontal-control
|
||||||
|
"Build change" query-parameters
|
||||||
|
#:options '(("(none specified)" . "")
|
||||||
|
("Broken" . "broken")
|
||||||
|
("Fixed" . "fixed")
|
||||||
|
("Still working" . "still-working")
|
||||||
|
("Still failing" . "still-failing")
|
||||||
|
("Unknown" . "unknown"))
|
||||||
|
#:help-text '("Filter by the changes to the builds:"
|
||||||
|
(dl
|
||||||
|
(@ (class "dl-horizontal"))
|
||||||
|
(dt "Broken")
|
||||||
|
(dd
|
||||||
|
"There was a successful build against the base
|
||||||
|
derivation, but no successful build for the target derivation, and there's at
|
||||||
|
least one failed build.")
|
||||||
|
(dt "Fixed")
|
||||||
|
(dd
|
||||||
|
"No successful build for the base derivation and
|
||||||
|
at least one failed build, plus at least one successful build for the target
|
||||||
|
derivation")
|
||||||
|
(dt "Still working")
|
||||||
|
(dd
|
||||||
|
"At least one successful build for both the base
|
||||||
|
and target derivations")
|
||||||
|
(dt "Still broken")
|
||||||
|
(dd
|
||||||
|
"No successful builds and at least one failed builds for both the base and target derivations")
|
||||||
|
(dt "Unknown")
|
||||||
|
(dd
|
||||||
|
"No base and target derivation to compare, or not
|
||||||
|
enought builds to determine a change")))
|
||||||
|
#:allow-selecting-multiple-options #f)
|
||||||
(div (@ (class "form-group form-group-lg"))
|
(div (@ (class "form-group form-group-lg"))
|
||||||
(div (@ (class "col-sm-offset-2 col-sm-10"))
|
(div (@ (class "col-sm-offset-2 col-sm-10"))
|
||||||
(button (@ (type "submit")
|
(button (@ (type "submit")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue