Skip to content
Snippets Groups Projects
This project is mirrored from https://git.savannah.gnu.org/git/guix/guix-cuirass.git/. Pull mirroring failed .
Last successful update .
  1. Sep 10, 2020
    • Mathieu Othacehe's avatar
      Add a status field to Evaluation table. · f5b0d393
      Mathieu Othacehe authored
      The Evaluation table currently has an 'in_progress' field. Distinction between
      succeeded and failed evaluations are based on the presence of Builds records
      for the evaluation. It it also not possible to distinguish aborted evaluations
      from failed evaluations.
      
      Rename 'in_progress' field to 'status'. The 'status' field can be equal to
      'started', 'succeeded', 'failed' or 'aborted'.
      
      * src/cuirass/database.scm (evaluation-status): New exported enumeration.
      (db-set-evaluations-done, db-set-evaluation-done): Remove them.
      (db-abort-pending-evaluations, db-set-evaluation-status): New exported procedures.
      (db-add-evaluation, db-get-builds, db-get-evaluations,
      db-get-evaluations-build-summary, db-get-evaluation-summary): Adapt to use
      'status' field instead of 'in_progress' field.
      * src/cuirass/templates.scm (evaluation-badges): Ditto.
      * src/schema.sql (Evaluations): Rename 'in_progress' field to 'status'.
      * src/sql/upgrade-10.sql: New file.
      * bin/cuirass.in (main): Use "db-abort-pending-evaluations" instead of
      "db-set-evaluations-done".
      * src/cuirass/base.scm (evaluate): Use "db-set-evaluation-status" instead of
      "db-set-evaluations-done".
      (build-packages): Use "db-set-evaluation-status" instead of
      "db-set-evaluation-done".
      * tests/database.scm (sqlite-exec): Adapt accordingly.
      * tests/http.scm (evaluations-query-result): Ditto.
      f5b0d393
  2. Sep 07, 2020
    • Mathieu Othacehe's avatar
      Do not use commit time as checkout timestamp. · af12a805
      Mathieu Othacehe authored
      Commit time can be far away from the actual push time. Thus, use the checkout
      time instead of the commit time to fill Checkouts 'timestamp' field.
      
      * src/cuirass/base.scm (fetch-input): Return the checkout time instead of the
      commit time.
      af12a805
  3. Sep 06, 2020
    • Mathieu Othacehe's avatar
      Handle evaluations without timestamp. · 33798abc
      Mathieu Othacehe authored
      This is a follow-up of d9879583.
      
      * src/cuirass/templates.scm (evaluation-build-table): Do not print evaluation
      date if the "timestamp" field equals zero.
      33798abc
    • Mathieu Othacehe's avatar
      Display evaluation date and duration. · d9879583
      Mathieu Othacehe authored
      src/cuirass/database.scm (db-get-evaluations): Add support for "timestamp",
      "checkouttime" and "evaltime" fields,
      (db-get-evaluation-summary): ditto.
      src/cuirass/templates.scm (nearest-exact-integer, seconds->string): New
      procedures,
      (evaluation-build-table): print evaluation date and duration.
      d9879583
    • Mathieu Othacehe's avatar
      Save evaluations and checkouts timestamps. · 154232bc
      Mathieu Othacehe authored
      src/cuirass/base.scm (fetch-input): Add the commit timestamp to the returned
      association list,
      (process-specs): Pass a timestamp taken at procedure start and another one
      taken after inputs are fetched to "db-add-evaluation" procedure. Once the
      evaluation is over, call "db-set-evaluation-time" to save the evaluation
      completion time.
      src/cuirass/database.scm (db-set-evaluation-time): New procedure,
      (db-add-checkout): Handle the "timestamp" field,
      (db-add-evaluation): add "checkouttime" and "evaltime" arguments. Modify the
      associated SQL query accordingly.
      (db-get-builds): Use "Builds.timestamp" instead of "timestamp" as this field
      is also part of the Evaluations table.
      src/schema.sql (Checkouts): Add "timestamp" field,
      (Evaluations): add "timestamp", "checkouttime" and "evaltime" fields.
      src/sql/upgrade-9.sql: New file.
      tests/database.scm (sqlite-exec): Adapt Evaluations table insertions to include
      "timestamp", "checkouttime" and "evaltime" required fields.
      154232bc
  4. Sep 02, 2020
    • Mathieu Othacehe's avatar
      Fix /specifications route. · b135a02b
      Mathieu Othacehe authored
      Fixes <https://issues.guix.gnu.org/43163>.
      
      * src/cuirass/http.scm (specification->json-object): New procedure,
      (url-handler): use it for "/specifications" route to convert specification
      objects into a representation suitable for json->scm.
      * tests/http.scm ("/specifications"): Test the above route.
      b135a02b
  5. Aug 25, 2020
  6. Aug 05, 2020
    • Mathieu Othacehe's avatar
      web: server: Remove with-ignored-disconnects. · 1bcccbab
      Mathieu Othacehe authored
      Use the pre-unwind-handler of a catch clause instead of nesting
      with-throw-handler inside a catch clause.
      
      * src/web/server/fiberized.scm (with-ignored-disconnects): Remove it,
      (client-loop): replace "with-ignored-disconnects" with a catch clause.
      1bcccbab
  7. Aug 04, 2020
    • Mathieu Othacehe's avatar
      web: server: Ignore all client disconnects. · 0abf1920
      Mathieu Othacehe authored
      EPIPE and ECONNRESET errors are already ignored when thrown by "sendfile" and
      "put-bytevector" procedures. It turns out "peek-char" can also cause such
      errors. So ignore such errors within the whole procedure.
      
      * src/web/server/fiberized.scm (client-loop): Wrap the whole procedure inside
      "with-ignored-disconnects" instead of wrapping individually "sendfile" and
      "put-bytevector" calls.
      0abf1920
  8. Aug 03, 2020
  9. Aug 02, 2020
    • Mathieu Othacehe's avatar
      http: Handle wrong build number. · 76968292
      Mathieu Othacehe authored
      The request "/build/1234)" causes a select query on the whole Builds table,
      because failed "string->number" conversion is not handled.
      
      * src/cuirass/http.scm (url-handler): Handle erroneous id -> number conversion
      on "/build/id" route.
      76968292
  10. Aug 01, 2020
    • Mathieu Othacehe's avatar
      database: Warn if the worker is busy for more than 5 seconds. · 153b49c9
      Mathieu Othacehe authored
      * src/cuirass/utils.scm (with-operation, get-message-with-timeout): New
      procedures,
      (call-with-worker-thread): add timeout and timeout-proc arguments.
      * src/cuirass/database.scm (with-db-worker-thread): Pass a 5 seconds timeout
      to call-with-worker-thread, and print a debug message on timeout expiration.
      153b49c9
  11. Jul 31, 2020
  12. Jul 30, 2020
    • Mathieu Othacehe's avatar
      web: server: Handle client disconnection. · 0955a11a
      Mathieu Othacehe authored
      * src/web/server/fiberized.scm (client-loop): Catch EPIPE and ECONNRESET
      errors than can be thrown if the client disconnects prematurely.
      0955a11a
    • Mathieu Othacehe's avatar
      utils: Do not block the calling fiber. · 6ad9c602
      Mathieu Othacehe authored
      Setting current-fiber to #f in %non-blocking will prevent put-message in the
      new thread to try suspending itself, but will also cause the same behavior on
      get-message, which is not desired.
      
      * src/cuirass/utils.scm (%non-blocking): Reduce the scope of current-fiber
      parameter to the newly created thread.
      6ad9c602
  13. Jul 29, 2020
  14. Jul 26, 2020
    • Mathieu Othacehe's avatar
      templates: Handle missing input case. · f71f026a
      Mathieu Othacehe authored
      It happens that some left-over checkout entries refer to removed inputs. In
      that case, input will be #f, causing commit-hyperlink to fail with the
      following error message:
      
      In cuirass/http.scm:
         475:25  9 (url-handler _ _)
          193:3  8 (evaluation-html-page ((#:id . 5103) (# . 0) (# . 39) ?) ?)
      In cuirass/templates.scm:
         612:14  7 (evaluation-build-table _ #:checkouts _ #:inputs _ # _ # ?)
      In srfi/srfi-1.scm:
         586:17  6 (map1 (((#:commit . "3a3e9f2bb586e79a7931163f0191d?") ?)))
      In cuirass/templates.scm:
         621:39  5 (_ _)
         584:15  4 (commit-hyperlink #f "3a3e9f2bb586e79a7931163f0191df615?")
      In web/uri.scm:
         308:23  3 (string->uri _)
         278:14  2 (string->uri-reference _)
      In unknown file:
                 1 (regexp-exec #<regexp 7f3a76c05980> #f #<undefined> #<u?>)
      In ice-9/boot-9.scm:
        1669:16  0 (raise-exception _ #:continuable? _)
      In procedure regexp-exec: Wrong type argument in position 2 (expecting string): #f
      
      * src/cuirass/templates.scm (evaluation-build-table): Do not call
      "commit-hyperlink" if the matching input could not be found.
      f71f026a
  15. Jul 25, 2020
    • Mathieu Othacehe's avatar
      Fix spec reading when restarting builds. · 17395e85
      Mathieu Othacehe authored
      When "spawn-builds" is called to restart builds, the spec is not known,
      preventing build products from being created as reported here:
      
      https://issues.guix.gnu.org/42523
      
      Fix this issue by reading the specification in database in
      "set-build-successful!" procedure.
      
      * src/cuirass/database.scm (db-get-specification): New exported procedure,
      (db-get-specifications): add an optional name argument.
      * tests/database.scm (db-get-specification): Add a corresponding test-case.
      * src/cuirass/base.scm (set-build-successful!): Remove spec argument and read
      it directly from database instead,
      (update-build-statuses!): also remove spec argument, adapt
      set-build-successful! call accordingly,
      (spawn-builds): remove spec argument and adapt handle-build-event and
      update-build-statuses! calls accordingly,
      (handle-build-event): remove spec argument, adapt
      set-build-successful! call accordingly,
      (build-packages): remove spec argument, adapt spawn-builds call accordingly,
      (process-specs): adapt build-packages call.
      17395e85
  16. Jul 03, 2020
    • Mathieu Othacehe's avatar
      navbar: Fix typo. · d11ce40a
      Mathieu Othacehe authored
      * src/cuirass/templates.scm (html-page): Turn "Latest builds" into "Running
      builds".
      d11ce40a
    • Mathieu Othacehe's avatar
      Add "latest builds" support. · 136a8295
      Mathieu Othacehe authored
      Add a "status" dropdown menu in the navigation bar. For now this menu only
      contains one item, a link to the "latest builds" page at "/status" location.
      
      * src/cuirass/database.scm (db-get-builds): Add support for 'started status.
      * src/cuirass/http.scm (url-handler): Add "/status" route.
      * src/cuirass/templates.scm (running-builds-table): New procedure,
      (html-page): add a dropdown menu containing one item, a link to "/status"
      route defined above.
      * src/static/css/cuirass.css: Add new class to allow bootstrap dropdown menus
      to work without javascript plugin.
      136a8295
  17. Jun 30, 2020
  18. Jun 29, 2020
    • Mathieu Othacehe's avatar
      Factorize build products creation. · 4dd9664b
      Mathieu Othacehe authored
      Make sure that build products are also created when a batch of derivations
      finishes, and not only when single build success events are received.
      
      Factorize build status update to success and build products creation into a
      single procedure.
      
      * src/cuirass/base.scm (set-build-successful!): New procedure,
      (update-build-statuses!): call it here,
      (handle-build-event): and here.
      4dd9664b
  19. Jun 26, 2020
    • Mathieu Othacehe's avatar
      Check for derivation before creating build products. · 91204db3
      Mathieu Othacehe authored
      It happens that we receive build succeeded notifications for derivations that
      are not stored in the Builds table. In that case, do not try to create build
      products.
      
      * src/cuirass/base.scm (handle-build-event): Check if the derivation is
      registered in the Builds table.
      91204db3
  20. Jun 23, 2020
    • Mathieu Othacehe's avatar
      http: Display gzipped log files in the browser. · 300f6253
      Mathieu Othacehe authored
      This is a follow-up of 2280ae18. The gzipped
      log files are supposed to be displayed directly in the browser and not
      downloaded. Set "Content-Disposition" header to "inline" to ensure that.
      
      * src/cuirass/http.scm (respond-gzipped-file): Set to "Content-Disposition" to
      "inline".
      300f6253
  21. Jun 22, 2020
    • Mathieu Othacehe's avatar
      Create build products as soon as the build succeeded. · 10b16ec0
      Mathieu Othacehe authored
      When searching for successful builds in Cuirass, it is expected that the build
      products are already available. Hence, make sure that build products are
      computed before the build is marked as successful.
      
      * src/cuirass/base.scm (spawn-builds): Add a spec argument,
      (handle-build-event): ditto, and call create-build-outputs when the
      build-succeeded event is received,
      (create-build-outputs): take a single build argument instead of a builds list
      and adapt accordingly,
      (build-packages): pass spec argument to spawn-builds and remove
      create-build-outputs call.
      10b16ec0
  22. Jun 21, 2020
  23. Jun 15, 2020
  24. Jun 14, 2020
  25. Jun 13, 2020
    • Christopher Baines's avatar
      Add missing sql upgrade-8.sql file. · 76ec2967
      Christopher Baines authored
      * Makefile.am (dist_sql_DATA): Add src/sql/upgrade-8.sql.
      76ec2967
    • Christopher Baines's avatar
      sql: Add a couple of indexes. · 7f71d9b7
      Christopher Baines authored
      Remove the Builds_index from the schema, as it would have been removed in
      error by the upgrade-6 upgrade.  Add a specific index on the Builds status
      field, as this helps with db-get-builds queries, and add an index on the
      Outputs derivation field, as this helps with the db-get-outputs part of
      db-get-builds.
      
      * src/sql/upgrade-8.sql: New file.
      * src/schema.sql: Update accordingly.
      7f71d9b7
  26. Jun 10, 2020
    • Mathieu Othacehe's avatar
      cuirass: Use sendfiles instead of raw copies. · 2280ae18
      Mathieu Othacehe authored
      * src/cuirass/http.scm (respond-file): Send the file name as 'x-raw-file
      header argument, instead of the raw file content,
      (respond-gzipped-file): ditto. Also set 'content-disposition header.
      * src/web/server/fiberized.scm (strip-headers, with-content-length): New procedures,
      (client-loop): Check if 'x-raw-file is set. If it's the case, use sendfiles to
      send the given file. Otherwise, keep the existing behaviour and send directly
      the received bytevector.
      2280ae18
Loading