aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Separate web interface.Ricardo Wurmus2019-08-10
| | | | | | | * 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.
* Fix templates to handle all statuses.Robert Vollmert2019-08-07
| | | | | * src/cuirass/templates.scm: Factor out class and title helpers for build statuses, and handle all the statuses.
* database: query->bind-arguments: Process ^ and $ characters.Ricardo Wurmus2019-06-20
| | | | | * src/cuirass/database.scm (query->bind-arguments): Handle ^ and $ characters in query strings.
* templates: If applicable, disable "Last" and "First" pagination links.Danny Milosavljevic2019-06-19
| | | | | * src/cuirass/templates.scm (pagination): Disable "Last" and "First" if applicable.
* templates: Add link titles to evaluation badges.Tobias Geerinckx-Rice2019-06-19
| | | | * src/cuirass/templates.scm (evaluation-badges): Add ‘title’ attributes.
* templates: Expand search input on focus.Ricardo Wurmus2019-06-19
| | | | | * src/cuirass/templates.scm (html-page): Include CSS for widening the search input field on focus.
* cuirass: Restore search query.Ricardo Wurmus2019-06-19
| | | | | | | | * 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.
* database: query->bind-arguments: Ignore invalid query terms.Ricardo Wurmus2019-06-19
| | | | | * src/cuirass/database.scm (query->bind-arguments): Ignore invalid query terms.
* templates: Display logs of blocking dependencies.Ricardo Wurmus2019-06-19
| | | | | * src/cuirass/templates.scm (build-details): Determine failed outputs of prerequisites and link to their logs.
* http: Show number of builds.Ricardo Wurmus2019-06-19
| | | | | * src/cuirass/database.scm (db-get-evaluation-summary): New procedure. * src/cuirass/http.scm (url-handler): Display number of builds in tabs.
* cuirass: Remove tabs for canceled, dependency failed, and other failed.Ricardo Wurmus2019-06-19
| | | | | | All of them are included in "failed". * src/cuirass/http.scm (url-handler): Remove extraneous tabs.
* cuirass: Adjust query for scheduled builds.Ricardo Wurmus2019-06-19
| | | | * src/cuirass/http.scm (url-handler): Use "pending" instead of "scheduled".
* cuirass: Display builds in separate tabs.Ricardo Wurmus2019-06-19
| | | | | | * 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.
* http: Fix navigation URL for build details page.Ricardo Wurmus2019-06-19
| | | | * src/cuirass/http.scm (url-handler): Use "jobset" instead of "spec".
* templates: Link to "details" page in build tables.Ricardo Wurmus2019-06-19
| | | | | * src/cuirass/templates.scm (build-eval-table, build-search-results-table): Link ID to build details URL.
* http: Handle /build/<id>/details URL.Ricardo Wurmus2019-06-18
| | | | | * src/cuirass/http.scm (url-handler): Add handler for /build/<id>/details. * src/cuirass/templates.scm (build-details): New procedure.
* database: db-get-specifications: Order specs by name.Ricardo Wurmus2019-06-18
| | | | * src/cuirass/database.scm (db-get-specifications): Order rows by "name".
* database: Support advanced query strings.Ricardo Wurmus2019-05-21
| | | | | | * 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.
* http: Gracefully handle missing query.Ricardo Wurmus2019-05-21
| | | | | * src/cuirass/http.scm (url-handler): Skip computation of builds-id-min and builds-id-max when query is missing.
* templates: Highlight query string.Ricardo Wurmus2019-05-21
| | | | | * src/cuirass/templates.scm (build-search-results-table): Highlight query string.
* cuirass: Add search for builds.Ricardo Wurmus2019-05-17
| | | | | | | | | | * 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.
* static: Replace logo.Ricardo Wurmus2019-05-04
| | | | * src/static/images/logo.png: Replace "GuixSD" with "Guix".
* base: Keep going when a Git error is raised.Ludovic Courtès2018-11-20
| | | | | * src/cuirass/base.scm (process-specs): Catch 'git-error around call to 'process'.
* database: Re-throw the message of 'sqlite-error' exceptions.Ludovic Courtès2018-11-16
| | | | | | | | 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'.
* database: Factorize 'sqlite-error' handling.Ludovic Courtès2018-11-16
| | | | | | * 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'.
* templates: Mark failures on the evaluation page.Ludovic Courtès2018-11-07
| | | | | * src/cuirass/templates.scm (evaluation-badges): Use a special badge denoting failure when the sum of all jobs is zero.
* database: Remove duplicate #:in-progress entry.Ludovic Courtès2018-11-07
| | | | | * src/cuirass/database.scm (db-get-evaluations-build-summary): Remove duplicate #:in-progress entry.
* examples: random: Fail evaluation once in a while.Ludovic Courtès2018-11-07
| | | | | | * examples/random-jobs.scm (make-random-jobs): Fail once in a while. (%seed, %state): New variables. (random-derivation): Use %SEED.
* base: Clear the "in progress" bit of failed evaluations.Ludovic Courtès2018-11-07
| | | | | | | Fixes <https://bugs.gnu.org/32734>. * src/cuirass/base.scm (evaluate): Call 'db-set-evaluation-done' upon '&evaluation-error'.
* templates: Add link to build log only for completed builds.Ludovic Courtès2018-11-07
| | | | | * src/cuirass/templates.scm (build-eval-table)[table-row]: Define 'completed?'. Add link to build log iff COMPLETED? is true.
* templates: Display dates in a concise way.Ludovic Courtès2018-11-07
| | | | | * src/cuirass/templates.scm (time->string): New procedure. (build-eval-table): Use it instead of 'strftime'.
* templates: Adjust build table headers.Ludovic Courtès2018-11-07
| | | | | | * src/cuirass/templates.scm (build-eval-table)[table-header]: Change "Nixname" to "Name" and "Finished at" to "Completion time". Use strings for each header.
* templates: Display a finish time only for completed builds.Ludovic Courtès2018-11-07
| | | | | * src/cuirass/templates.scm (build-eval-table): Display a finish time only when STATUS is 'succeeded' or 'failed'.
* base: Add missing space in message.Ludovic Courtès2018-11-07
| | | | * src/cuirass/base.scm (spawn-builds): Add missing space in message.
* base: Fix type error in 'update-build-statuses!'.Ludovic Courtès2018-11-07
| | | | | | | This is a followup to be489a26c0e6a5f23a48142a87728a0ec8bc3c9c. * src/cuirass/base.scm (update-build-statuses!): Use DRV, not (derivation-file-name DRV).
* templates: Distinguish among the various failure cases.Ludovic Courtès2018-11-07
| | | | | | * 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.
* examples: random: Produce derivations that sometimes fail.Ludovic Courtès2018-11-07
| | | | * examples/random-jobs.scm (random-derivation): Fail randomly.
* base: Register GC roots for build results.Ludovic Courtès2018-11-07
| | | | | | | | | | | | | 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'.
* base: Disable builder output.Ludovic Courtès2018-11-07
| | | | | * src/cuirass/base.scm (with-store): Pass #:build-verbosity to 'set-build-options'.
* http: No longer log incoming connections.Ludovic Courtès2018-11-07
| | | | | * src/web/server/fiberized.scm (socket-loop): Remove "HTTP connection" message logging.
* http: Remove useless lambda expression.Clément Lassieur2018-11-07
| | | | * src/cuirass/http.scm (run-cuirass-server): Remove useless lambda expression.
* base: Distinguish between 'failed' and 'failed-dependency'.Ludovic Courtès2018-10-08
| | | | | * src/cuirass/base.scm (update-build-statuses!): Call 'log-file' and use that to distinguish between 'failed' and 'failed-dependency'.
* database: Return #f when one row is expected and there is none.Clément Lassieur2018-09-30
| | | | | | | * src/cuirass/database.scm (expect-one-row): New procedure. (db-get-build, db-get-evaluations-id-min, db-get-evaluations-id-max, db-get-builds-min, db-get-builds-max, db-get-evaluation-specification): Use it.
* templates: Add title to the evaluations table.TSholokhova2018-09-30
| | | | | | | * src/cuirass/http.scm (url-handler): Pass the ID argument to BUILD-EVAL-TABLE. * src/cuirass/templates.scm (build-eval-table): Add an EVAL-ID argument, add title.
* templates: Add a navigation bar.TSholokhova2018-09-30
| | | | | | | | | | | | | * src/cuirass/database.scm (db-get-evaluation-specification): New exported procedure. * src/cuirass/http.scm (respond-html): Allow to pass CODE as argument. (respond-html-eval-not-found): New procedure. (url-handler): Fill navigation arguments. Handle the case where the evaluation doesn't exist. * src/cuirass/templates.scm (navigation-items): New procedure. (html-page): Add navigation bar. Co-authored-by: Clément Lassieur <clement@lassieur.org>
* templates: Add build log links.TSholokhova2018-09-30
| | | | | * src/cuirass/templates.scm (build-eval-table): Add build log links to the table.
* templates: Allow to filter builds by status.TSholokhova2018-09-30
| | | | | | | | | | | | | * src/cuirass/database.scm (db-get-builds): Add 'succeeded' and 'failed' status filters. (db-get-builds-min, db-get-builds-max): Add support for a new 'status' argument. * src/cuirass/http.scm (url-handler): Add a status argument for the '/eval/id' endpoint. * src/cuirass/templates.scm (evaluation-badges): Add links to the buttons. (build-eval-table): Add a 'status' argument. Co-authored-by: Clément Lassieur <clement@lassieur.org>
* database: Add builds only if one of their outputs is new.Clément Lassieur2018-09-29
| | | | | | | | | | | | | * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-4.sql'. * src/cuirass/database.scm (db-add-output): New procedure. (db-add-build): Call DB-ADD-OUTPUT, rollback the transaction and return #f if DB-ADD-OUTPUT returned an empty list. * src/schema.sql (Outputs): Set 'path' as primary key, instead of 'derivation, name'. * src/sql/upgrade-4.sql: New file with SQL queries to upgrade the database. * tests/database.scm (make-dummy-build): Use the #:OUTPUTS key. Get default OUTPUTS to depend on DRV. ("db-add-build-with-fixed-output"): New test.
* database: Add a Checkouts table.Clément Lassieur2018-08-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is used to know when a new evaluation must be triggered and to display input changes. * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-3.sql'. * bin/cuirass.in (main): Call DB-SET-EVALUATION-DONE at startup to clear 'in-progress' evaluations. * bin/evaluate.in (input-checkout, format-checkouts): Rename '#:name' to '#:input'. * doc/cuirass.texi (Stamps): Remove section. (Checkouts): New section. * src/cuirass/base.scm (fetch-input, fetch-inputs, compile-checkouts): Rename '#:name' to '#:input'. (evaluate): Remove the COMMITS argument. Add an EVAL-ID argument. Don't call DB-ADD-EVALUATION because it was called sooner. Remove the EVAL-ID argument to AUGMENT-JOB because it's a closure. (build-packages): Add an EVAL-ID argument. Call DB-SET-EVALUATION-DONE once all the derivations are registered. (process-specs): Replace the stamping mechanism by the primary key constraint of the Checkouts table: call "evaluate" only when DB-ADD-EVALUATION is true, which means that at least one checkout was added. Change the EVALUATE and BUILD-PACKAGES arguments accordingly. * src/cuirass/database.scm (db-add-stamp, db-get-stamp): Remove procedures. (db-set-evaluations-done, db-set-evaluation-done): New exported procedure. (db-add-checkout): New procedure that returns #f if a checkout with the same revision already exists. (db-add-evaluation): Replace the EVAL argument with a SPEC-NAME and a CHECKOUTS arguments. Insert the evaluation only if at least one checkout was inserted. Return #f otherwise. (db-get-checkouts): New procedure. (db-get-evaluations, db-get-evaluations-build-summary): Handle the 'in_progress' column, remove the 'commits' column. Return the result of DB-GET-CHECKOUTS as part of the evaluation. * src/cuirass/templates.scm (input-changes, evaluation-badges): New procedures. (evaluation-info-table): Rename "Commits" to "Input changes". Use INPUT-CHANGES to display the input changes that triggered the evaluation. Use EVALUATION-BADGES to display a message indicating that the evaluation is in progress. * src/schema.sql (Stamps): Remove table. (Checkouts): New table. (Evaluations): Remove the 'commits' column. Add an 'in_progress' column. * src/sql/upgrade-3.sql: New file with SQL queries to upgrade the database. * tests/database.scm (make-dummy-eval): Remove procedure. (make-dummy-checkouts): New procedure. ("sqlite-exec"): Remove the 'commits' column. Add the 'in_progress' column. ("db-update-build-status!", "db-get-builds", "db-get-pending-derivations"): Update the arguments of DB-ADD-EVALUATION accordingly. * tests/http.scm (hash-table=?): Add support for lists of hash tables. (evaluations-query-result): Replace '#:commits' with '#:checkouts'. Return a list instead of returning one element, for symmetry. ("fill-db"): Add a new input so that the second checkout can refer to it. Replace EVALUATION1 and EVALUATION2 with CHECKOUTS1 and CHECKOUTS2. Update the arguments of DB-ADD-EVALUATION accordingly. ("/api/queue?nr=100"): Take the CAR of the EVALUATIONS-QUERY-RESULT list to make it symmetrical with the other argument of HASH-TABLE=?.
* database: Serialize all database accesses in a thread.Clément Lassieur2018-08-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/32234>. * bin/cuirass.in (main): Keep only one WITH-DATABASE call around all fibers. Remove all DB arguments. * src/cuirass/base.scm (evaluate, update-build-statuses!, spawn-builds, handle-build-event, build-packages): Remove all DB arguments. (clear-build-queue, cancel-old-builds): Wrap in WITH-DB-CRITICAL-SECTION, remove all DB arguments. (restart-builds): Remove the NON-BLOCKING call, remove all DB arguments. (process-specs): Remove all DB arguments, remove the WITH-DATABASE call. * src/cuirass/database.scm (%db-channel): New parameter. (with-db-critical-section): New macro. (db-add-input, db-add-specification, db-get-inputs, db-get-specifications, db-add-evaluation, db-add-build, db-update-build-status!, db-get-outputs, db-get-builds, db-get-build, db-get-pending-derivations, db-get-stamp, db-add-stamp, db-get-evaluations, db-get-evaluations-build-summary, db-get-evaluations-id-min, db-get-evaluations-id-max, db-get-builds-min, db-get-builds-max): Wrap in WITH-DB-CRITICAL-SECTION, remove all DB arguments. (with-database): Wrap BODY in PARAMETERIZE form that sets %DB-CHANNEL to the channel returned by MAKE-CRITICAL-SECTION. * src/cuirass/http.scm (handle-build-request, handle-builds-request): Remove all DB arguments. (url-handler): Remove all DB arguments, remove the DB-CHANNEL state, remove the WITH-CRITICAL-SECTION calls. (run-cuirass-server): Remove the DB arguments, remove the MAKE-CRITICAL-SECTION call. * src/cuirass/utils.scm (make-critical-section): Replace SPAWN-FIBER with CALL-WITH-NEW-THREAD. Wrap body in PARAMETERIZE form that clears CURRENT-FIBER. * tests/database.scm (with-temporary-database, "db-add-specification", "db-add-build", "db-update-build-status!", "db-get-builds", "db-get-pending-derivations"): Remove the DB arguments. ("db-init"): Set the %DB-CHANNEL parameter to the channel returned by MAKE-CRITICAL-SECTION, and return #t. ("database"): Set %DB-CHANNEL to #f during cleanup. * tests/http.scm ("db-init"): Set the %DB-CHANNEL parameter to the channel returned by MAKE-CRITICAL-SECTION, and return #t. ("cuirass-run", "fill-db"): Remove the DB arguments. ("http"): Set %DB-CHANNEL to #f during cleanup.