2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/guix-cuirass.git synced 2023-12-14 06:03:04 +01:00
Commit graph

555 commits

Author SHA1 Message Date
Ludovic Courtès
15fc2d7691 base: Log the evaluation ID upon evaluation failure.
* src/cuirass/base.scm (&evaluation-error)[id]: New field.
(evaluate): Specify the 'id' field.
(process-specs): Show the log file name upon evaluation failure.
2019-10-23 14:53:50 +02:00
Ludovic Courtès
c96863bc7c base: Write to 'evaluate' output to /var/log/cuirass.
This fixes a longstanding issue where evalution output would splatter
over the /var/log/cuirass.log and be inscrutable.

* src/cuirass/base.scm (%cuirass-state-directory): New variable.
(evaluation-log-file): New procedure.
(evaluate)[log-file, log-pipe]: New variables.
Call 'spawn-fiber' with a logging fiber.  Wrap 'open-pipe*' call into
'with-error-to-port'.  Close 'log-pipe'.
2019-10-23 14:53:50 +02:00
Christopher Baines
9acb0aa55b http: Support fetching builds by derivation.
There's a one to one mapping of build id to derivation, so allow querying by
derivation file name as well. I'm looking at this as I'm interested in getting
build information in to the Guix Data Service.

* src/cuirass/http.scm (url-handler): Support fetching builds by numeric id or
the derivation file name.
2019-10-02 08:16:54 +01:00
Ludovic Courtès
d27ff21e43 templates: Fix type errors in build details page.
This is a followup to 858b6b8c8f.

* src/cuirass/templates.scm (build-details)[blocking-outputs]: Fix type
errors when dealing with the result of 'derivation-build-plan'.
2019-09-23 22:44:53 +02:00
Ludovic Courtès
6cf84a43bb http: Pass 'build-search-results-table' a list, not a vector.
* src/cuirass/http.scm (url-handler): Call 'vector->list' on the result
of 'handle-builds-search-request', as expected by 'build-search-results-table'.
2019-08-27 10:12:12 +02:00
Ludovic Courtès
3d494b8973 http: Pass 'build-eval-table' a list, not a vector.
* src/cuirass/http.scm (url-handler): Call 'vector->list' on the result
of 'handle-builds-request', as expected by 'build-eval-table'.
2019-08-27 10:06:18 +02:00
Ricardo Wurmus
1cd2f9334d
http: Fix type error.
This is a follow-up to commit c6f4fa5f57.

* src/cuirass/http.scm (url-handler): SPECIFICATIONS-TABLE expects a list, not
a vector.
2019-08-27 00:38:08 +02:00
Ludovic Courtès
858b6b8c8f templates: Use 'derivation-build-plan'.
* src/cuirass/templates.scm (build-details): Use 'derivation-build-plan'
instead of 'derivation-prerequisites-to-build'.
2019-08-17 19:08:33 +02:00
Ludovic Courtès
b1d7e9ddb4 doc: Guile 2.2 is needed.
This is a followup to ee11ba1d93.

* README: Ask for Guile 2.2.
2019-08-17 18:59:28 +02:00
Ludovic Courtès
c6f4fa5f57 Switch to Guile-JSON 3.x.
Guile-JSON 3.x is incompatible with Guile-JSON 1.x, which we relied on
until now: it maps JSON dictionaries to alists (instead of hash tables),
and JSON arrays to vectors (instead of lists).  This commit is about
adjusting all the existing code to this new mapping.

* src/cuirass/http.scm (evaluation->json-object): New procedure.
(handle-builds-request): Pass the result through 'list->vector'.
(handle-builds-search-request): Likewise.
(url-handler): Likewise for /jobsets, /specifications, /api/evaluations,
and /build.  For /api/evaluations, use 'evaluation->json-object'.
* src/cuirass/utils.scm (object->json-scm): Add 'vector?' case.
* tests/http.scm (hash-table-keys, hash-table=?): Remove.
(evaluations-query-result): Use vectors for JSON arrays.
("object->json-string"): Expects alists instead of hash tables.
("/build/1"): Use 'lset=' instead of 'hash-table=?'.
("/api/latestbuilds?nr=1&jobset=guix"): Likewise, and expect alists
instead of hash tables.
("/api/latestbuilds?nr=1&jobset=gnu"): Likewise.
("/api/evaluations?nr=1"): Likewise.
* README: Mention Guile-JSON 3.x.
2019-08-17 18:48:34 +02:00
Ludovic Courtès
92bdf3cda0 http: Import (ice-9 format).
* src/cuirass/http.scm: Add missing include of (ice-9 format).
2019-08-17 16:53:07 +02:00
Ludovic Courtès
907c21f761 base: Use the new 'store-error' procedure names.
The 'nix-error' names are now deprecated in Guix.

* src/cuirass/base.scm (build-derivations&): Use the new 'store-error'
procedure names.
2019-08-17 12:09:23 +02:00
Ricardo Wurmus
e11f172265
Separate web interface.
* bin/cuirass.in (show-help): Document "--web" option.
(%options): Default to running without web interface.
(main): Either run the web interface or build packages.
* README: Mention the "--web" option.
2019-08-10 13:46:55 +02:00
Robert Vollmert
1aeea2f97f
Fix templates to handle all statuses.
* src/cuirass/templates.scm: Factor out class and title helpers
for build statuses, and handle all the statuses.
2019-08-07 16:19:20 +02:00
Ricardo Wurmus
fed15b83b0
database: query->bind-arguments: Process ^ and $ characters.
* src/cuirass/database.scm (query->bind-arguments): Handle ^ and $ characters
in query strings.
2019-06-20 23:31:34 +02:00
Danny Milosavljevic
d5b827097b
templates: If applicable, disable "Last" and "First" pagination links.
* src/cuirass/templates.scm (pagination): Disable "Last" and "First"
if applicable.
2019-06-19 17:47:13 +02:00
Tobias Geerinckx-Rice
8c91c82e35
templates: Add link titles to evaluation badges.
* src/cuirass/templates.scm (evaluation-badges): Add ‘title’ attributes.
2019-06-19 16:24:18 +02:00
Ricardo Wurmus
39e3c899e2
templates: Expand search input on focus.
* src/cuirass/templates.scm (html-page): Include CSS for widening the search
input field on focus.
2019-06-19 15:42:00 +02:00
Ricardo Wurmus
219506d5f9
cuirass: Restore search query.
* src/cuirass/templates.scm (search-form): Take the query as an argument and
set it as the value (unless #F).
(html-page): Optionally take a value for QUERY as an argument.
* src/cuirass/http.scm (url-handler): Let "search" handler pass QUERY to
HTML-PAGE.
2019-06-19 15:38:01 +02:00
Ricardo Wurmus
c3ff064e97
database: query->bind-arguments: Ignore invalid query terms.
* src/cuirass/database.scm (query->bind-arguments): Ignore invalid query
terms.
2019-06-19 15:37:05 +02:00
Ricardo Wurmus
5885b9814d
templates: Display logs of blocking dependencies.
* src/cuirass/templates.scm (build-details): Determine failed outputs of
prerequisites and link to their logs.
2019-06-19 15:17:45 +02:00
Ricardo Wurmus
efe7d36e64
http: Show number of builds.
* src/cuirass/database.scm (db-get-evaluation-summary): New procedure.
* src/cuirass/http.scm (url-handler): Display number of builds in tabs.
2019-06-19 10:22:51 +02:00
Ricardo Wurmus
a11f7a4779
cuirass: Remove tabs for canceled, dependency failed, and other failed.
All of them are included in "failed".

* src/cuirass/http.scm (url-handler): Remove extraneous tabs.
2019-06-19 09:58:17 +02:00
Ricardo Wurmus
831d73874b
cuirass: Adjust query for scheduled builds.
* src/cuirass/http.scm (url-handler): Use "pending" instead of "scheduled".
2019-06-19 09:56:06 +02:00
Ricardo Wurmus
372d47b326
cuirass: Display builds in separate tabs.
* src/cuirass/http.scm (url-handler): Split result for "eval" page in tabs.
* src/cuirass/templates.scm (build-eval-table): Remove border from table head;
Remove lead paragraph.
2019-06-19 09:38:08 +02:00
Ricardo Wurmus
11f888abb8
http: Fix navigation URL for build details page.
* src/cuirass/http.scm (url-handler): Use "jobset" instead of "spec".
2019-06-19 00:13:54 +02:00
Ricardo Wurmus
5f631820c8
templates: Link to "details" page in build tables.
* src/cuirass/templates.scm (build-eval-table, build-search-results-table):
Link ID to build details URL.
2019-06-19 00:09:27 +02:00
Ricardo Wurmus
5070d17e7e
http: Handle /build/<id>/details URL.
* src/cuirass/http.scm (url-handler): Add handler for /build/<id>/details.
* src/cuirass/templates.scm (build-details): New procedure.
2019-06-18 23:59:53 +02:00
Ricardo Wurmus
767f34bd68
database: db-get-specifications: Order specs by name.
* src/cuirass/database.scm (db-get-specifications): Order rows by "name".
2019-06-18 23:36:37 +02:00
Ricardo Wurmus
9017b9fbc1
database: Support advanced query strings.
* src/cuirass/database.scm (query->bind-arguments): New procedure.
(db-get-builds-by-search): Support filtering by spec and system.
(db-get-builds-query-min, db-get-builds-query-max): Adjust.
2019-05-21 11:40:28 +02:00
Ricardo Wurmus
74b8945f2b
http: Gracefully handle missing query.
* src/cuirass/http.scm (url-handler): Skip computation of builds-id-min and
builds-id-max when query is missing.
2019-05-21 11:38:15 +02:00
Ricardo Wurmus
965bace663
templates: Highlight query string.
* src/cuirass/templates.scm (build-search-results-table): Highlight query
string.
2019-05-21 11:37:34 +02:00
Ricardo Wurmus
ce114d8446
cuirass: Add search for builds.
* src/cuirass/database.scm (db-get-builds-by-search, db-get-builds-query-min,
db-get-builds-query-max): New procedures.
* src/cuirass/http.scm (handle-builds-search-request): New procedure.
(url-handler): Handle "search" route.
* src/cuirass/templates.scm (search-form): New variable.
(html-page): Use it.
(build-search-results-table): New procedure.
2019-05-17 22:40:12 +02:00
Ricardo Wurmus
eb9636e287
static: Replace logo.
* src/static/images/logo.png: Replace "GuixSD" with "Guix".
2019-05-04 00:07:07 +02:00
Ludovic Courtès
27f1463410 base: Keep going when a Git error is raised.
* src/cuirass/base.scm (process-specs): Catch 'git-error around call to
'process'.
2018-11-20 16:42:30 +01:00
Ludovic Courtès
d0ed3341d7 database: Re-throw the message of 'sqlite-error' exceptions.
Fixes <https://bugs.gnu.org/33407>.
Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>.

* src/cuirass/database.scm (catch-sqlite-error): Add missing MESSAGE
argument to 'throw'.
2018-11-16 21:49:02 +01:00
Ludovic Courtès
09afb02528 database: Factorize 'sqlite-error' handling.
* src/cuirass/database.scm (catch-sqlite-error): New macro.
(db-add-checkout, db-add-output, db-add-build): Use it instead of custom
'catch' block'.
2018-11-16 21:48:28 +01:00
Ludovic Courtès
0b40dca734 templates: Mark failures on the evaluation page.
* src/cuirass/templates.scm (evaluation-badges): Use a special badge
denoting failure when the sum of all jobs is zero.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
c76edac15d database: Remove duplicate #:in-progress entry.
* src/cuirass/database.scm (db-get-evaluations-build-summary): Remove
duplicate #:in-progress entry.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
9a7e567bf2 examples: random: Fail evaluation once in a while.
* examples/random-jobs.scm (make-random-jobs): Fail once in a while.
(%seed, %state): New variables.
(random-derivation): Use %SEED.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
2c712d35df base: Clear the "in progress" bit of failed evaluations.
Fixes <https://bugs.gnu.org/32734>.

* src/cuirass/base.scm (evaluate): Call 'db-set-evaluation-done' upon
'&evaluation-error'.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
2d7b703197 templates: Add link to build log only for completed builds.
* src/cuirass/templates.scm (build-eval-table)[table-row]: Define
'completed?'.  Add link to build log iff COMPLETED? is true.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
a1d353b152 templates: Display dates in a concise way.
* src/cuirass/templates.scm (time->string): New procedure.
(build-eval-table): Use it instead of 'strftime'.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
74436dae50 templates: Adjust build table headers.
* src/cuirass/templates.scm (build-eval-table)[table-header]: Change
"Nixname" to "Name" and "Finished at" to "Completion time".  Use strings
for each header.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
fd7dca655f templates: Display a finish time only for completed builds.
* src/cuirass/templates.scm (build-eval-table): Display a finish time
only when STATUS is 'succeeded' or 'failed'.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
df2cbfd0ae base: Add missing space in message.
* src/cuirass/base.scm (spawn-builds): Add missing space in message.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
954f750639 base: Fix type error in 'update-build-statuses!'.
This is a followup to be489a26c0.

* src/cuirass/base.scm (update-build-statuses!): Use DRV,
not (derivation-file-name DRV).
2018-11-07 15:28:05 +01:00
Ludovic Courtès
d90751624c templates: Distinguish among the various failure cases.
* src/cuirass/templates.scm (build-eval-table)[table-row]: Use the
'build-status' macro instead of numeric values.  Distinguish the
'cancel' and 'failed-dependency' cases from other failure cases.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
e50e1e5fdf examples: random: Produce derivations that sometimes fail.
* examples/random-jobs.scm (random-derivation): Fail randomly.
2018-11-07 15:28:05 +01:00
Ludovic Courtès
d4623d50ed base: Register GC roots for build results.
Fixes <https://bugs.gnu.org/33124>.

* src/cuirass/base.scm (%gc-root-directory, %gc-root-ttl): New variables.
(gc-root-expiration-time, register-gc-root): New procedures.
(handle-build-event)[gc-roots]: New procedure.
Upon 'build-succeeded' events, call 'register-gc-root' and
'maybe-remove-expired-cache-entries'.
* bin/cuirass.in (show-help, %options): Add '--ttl'.
(main): Parameterize %GC-ROOT-TTL.  Create %GC-ROOT-DIRECTORY.
* doc/cuirass.texi (Invocation): Document '--ttl'.
2018-11-07 15:28:05 +01:00