Skip to content
Snippets Groups Projects
This project is mirrored from https://git.savannah.gnu.org/git/guix/guix-cuirass.git/. Pull mirroring updated .
  1. Jan 11, 2021
  2. Oct 14, 2020
  3. Jun 10, 2020
    • Mathieu Othacehe's avatar
      Add support for build products downloading. · f44618fc
      Mathieu Othacehe authored
      * src/sql/upgrade-7.sql: New file.
      * Makefile.am: Add it.
      * src/cuirass/base.scm (create-build-outputs): New procedure,
      (build-packages): call it,
      (process-spec): add the new spec argument and pass it to create-build-outputs.
      * src/cuirass/database.scm (db-add-build-product, db-get-build-product-path,
      db-get-build-products): New exported procedures.
      * src/cuirass/http.scm (respond-static-file): Move file sending to ...
      (respond-file): ... this new procedure,
      (url-handler): add a new "download/<id>" route, serving the requested file
      with the new respond-file procedure. Also gather build products and pass them
      to "build-details" for "build/<id>/details" route.
      * src/cuirass/templates.scm (build-details): Honor the new "products" argument
      to display all the build products associated to the given build.
      * src/schema.sql (BuildProducts): New table,
      (Specifications)[build_outputs]: new field.
      * tests/database.scm: Add empty build-outputs spec.
      * tests/http.scm: Ditto.
      * examples/guix-jobs.scm: Ditto.
      * examples/hello-git.scm: Ditto.
      * examples/hello-singleton.scm: Ditto.
      * examples/hello-subset.scm: Ditto.
      * examples/random.scm: Ditto.
      * doc/cuirass.texi (overview): Document it.
      Unverified
      f44618fc
  4. Jan 16, 2020
    • Christopher Baines's avatar
      Support returning build information by output. · 46f73b6b
      Christopher Baines authored
      Being able to take a derivation and query the build information is useful, but
      in cases where there are multiple derivations that produce the same outputs,
      the probability of getting the data back from Cuirass is reduced.
      
      This is because Cuirass might not have build the exact derivation you have,
      but a different derivation that produces the same outputs (this can commonly
      happen when a related fixed output derivation changes).
      
      Cuirass doesn't store derivations if they produce the same outputs as a
      derivation it already knows about, so it can't determine if this is the
      case. Therefore, provide a way of querying build results by output, rather
      than derivation.
      
      The motivation behind this is to make it easier to import build information in
      to the Guix Data Service.
      
      * src/cuirass/database.scm (db-get-output): New procedure.
      * src/cuirass/http.scm (respond-output-not-found): New procedure.
      (request-path-components): Handle /output/… requests.
      * doc/cuirass.texi (Build information): Mention that you can get build
      information by output.
      46f73b6b
  5. Nov 07, 2018
    • Ludovic Courtès's avatar
      base: Register GC roots for build results. · d4623d50
      Ludovic Courtès authored
      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'.
      d4623d50
  6. Aug 27, 2018
    • Clément Lassieur's avatar
      database: Add a Checkouts table. · 8d40c491
      Clément Lassieur authored
      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=?.
      Unverified
      8d40c491
  7. Aug 17, 2018
    • Clément Lassieur's avatar
      database: Merge Derivations into Builds table. · 4db99f64
      Clément Lassieur authored
      Fixes <https://bugs.gnu.org/32190>.
      
      * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-2.sql'.
      * doc/cuirass.texi (Derivations): Remove section.
      (Builds): Update accordingly.  Add columns from the Derivations table.
      (Outputs): Replace 'id' with 'derivation'.
      * src/cuirass/base.scm (evaluate): Don't add jobs to the Derivations table.
      (build-packages): Add columns that were in the Derivations table before.  Only
      build the derivations that were successfully registered, that is, those that
      didn't exist in the Builds table.  Give a derivation instead of a build id to
      DB-GET-BUILD.  Compute the number of failed jobs based on the derivations that
      were added to the table, instead of the jobs.
      * src/cuirass/database.scm (db-add-derivation, db-get-derivation): Remove
      exported procedures.
      (db-add-build): Catch SQLITE_CONSTRAINT_PRIMARYKEY error, which means that two
      jobs produced the same derivation, and return #f in that case.  Add columns
      that were in the Derivations table before.  Use 'derivation' as primary key
      for the Outputs table.
      (db-get-outputs): Use 'derivation' as identifier, instead of 'build-id'.
      (filters->order): Replace 'id' with 'rowid'.
      (db-get-builds): Add a 'derivation' filter.  Replace 'id' with 'rowid'.
      Remove the 'INNER JOIN Derivations'.  Replace Derivations with Builds.  Return
      'derivation' in first position to make it clear that it's the primary key.
      Pass DERIVATION instead of ID to DB-GET-OUTPUTS.
      (db-get-build): Allow to take a derivation as argument.  Use NUMBER? to
      differentiate between derivations and ids.
      (db-get-pending-derivations): Remove the 'SELECT DISTINCT' clause now that
      derivations are unique.  Remove the 'INNER JOIN Builds'.
      (db-get-evaluations-build-summary, db-get-builds-min, db-get-builds-max):
      Replace 'id' with 'rowid'.
      * src/schema.sql (Derivations): Remove table.
      (Outputs): Replace Builds.id with Builds.derivation.
      (Builds): Use 'derivation' as primary key.  Remove the 'id' column.  Add
      'job_name', 'system', 'nix_name' columns that were in the Derivations table
      before.
      (Builds_Derivations_index): Rename to Builds_index.  Update accordingly.
      (Derivations_index): Remove index.
      * src/sql/upgrade-2.sql: New file with SQL queries to upgrade the database.
      * tests/database.scm (make-dummy-job, make-dummy-derivation): Remove
      procedures.
      (make-dummy-build): Add columns that were in MAKE-DUMMY-DERIVATION.  Get the
      DRV parameter to be mandatory because it's a primary key.
      (%id): Remove parameter.
      ("db-add-derivation", "db-get-derivation"): Remove tests.
      ("db-add-build"): Expect #f, because it adds twice the same derivation.  Pass
      the derivation argument to MAKE-DUMMY-BUILD.
      ("db-update-build-status!"): Rename 'id' to 'derivation'.  Pass the derivation
      argument to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION call.
      ("db-get-builds", "db-get-pending-derivations"): Pass the derivation argument
      to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION calls.
      * tests/http.scm ("fill-db"): Remove DERIVATION1 and DERIVATION2, and put
      their content in BUILD1 and BUILD2.  Remove the DB-ADD-DERIVATION calls.
      Unverified
      4db99f64
  8. Aug 05, 2018
  9. Jul 17, 2018
    • Clément Lassieur's avatar
      Add support for multiple inputs. · 7b2f9e0d
      Clément Lassieur authored
      * Makefile.am (dist_sql_DATA): Add src/sql/upgrade-1.sql.
      * bin/cuirass.in (show-help, %options, main): Remove the LOAD-PATH option that
      was used afterwards as %GUIX-PACKAGE-PATH.
      * bin/evaluate.in (absolutize, input-checkout, spec-source, spec-load-path,
      spec-package-path, format-checkouts): New procedures.
      (%not-colon): Remove variable.
      (main): Take the load path, package path and PROC from the checkouts that
      result from the inputs.  Format the checkouts before sending them to the
      procedure.  Remove the LOAD-PATH argument.
      * doc/cuirass.texi (Overview, Database schema): Document the changes.
      * examples/{guix-jobs.scm, hello-git.scm, hello-singleton.scm,
      hello-subset.scm, random.scm}: Adapt to the new specification format.
      * examples/guix-track-git.scm (package->spec): Rename to PACKAGE->INPUT.
      (package->git-tracked): Replace FETCH-REPOSITORY with FETCH-INPUT and handle
      the new format of its return value.
      * examples/random-jobs.scm (make-random-jobs): Rename RANDOM to CHECKOUT.
      Rename the checkout from 'random (which is a specification) to 'cuirass (which
      is a checkout resulting from an input).
      * src/cuirass/base.scm (fetch-repository): Rename to fetch-input.  Rename SPEC
      to INPUT.  Return a checkout object instead of returning two values.
      (evaluate): Take a list of CHECKOUTS and COMMITS as arguments, instead of
      SOURCE.  Remove TOKENIZE and LOAD-PATH.  Pass the CHECKOUTS instead of the
      SOURCE to "evaluate".  Remove %GUIX-PACKAGE-PATH.  Build the EVAL object
      instead of getting it from "evaluate".
      (compile?, fetch-inputs, compile-checkouts): New procedures.
      (process-specs): Fetch all inputs instead of only fetching one repository.
      The result of that fetching operation is a list of CHECKOUTS whose COMMITS are
      used as a STAMP.
      (%guix-package-path, set-guix-package-path): Remove them.
      * src/cuirass/database.scm (db-add-input, db-get-inputs): New procedures.
      (db-add-specification, db-get-specifications): Adapt to the new specification
      format.  Add/get all inputs as well.
      (db-add-evaluation): Rename REVISION to COMMITS.  Store COMMITS as space
      separated commit hashes.
      (db-get-builds): Rename REPO_NAME to NAME.
      (db-get-stamp): Rename COMMIT to STAMP.  Return #f when there is no STAMP.
      (db-add-stamp): Rename COMMIT to STAMP.  Deal with DB-GET-STAMP's new return
      value.
      (db-get-evaluations): Rename REVISION to COMMITS.  Tokenize COMMITS.
      * src/cuirass/utils.scm (%non-blocking): Export it.
      * src/schema.sql (Inputs): New table that refers to the Specifications table.
      (Specifications): Move input related fields to the Inputs table.  Rename
      REPO_NAME to NAME.  Rename ARGUMENTS to PROC_ARGS.  Rename FILE to PROC_FILE.
      Add LOAD_PATH_INPUTS, PACKAGE_PATH_INPUTS and PROC_INPUT fields that refer to
      the Inputs table.
      (Stamps): Rename REPO_NAME to NAME.
      (Evaluations): Rename REPO_NAME to NAME.  Rename REVISION to COMMITS.
      (Specifications_index): Replace with Inputs_index.
      * src/sql/upgrade-1.sql: New file.
      * tests/database.scm (example-spec, make-dummy-eval, sqlite-exec): Adapt to
      the new specifications format.  Rename REVISION to COMMITS.
      * tests/http.scm (evaluations-query-result, fill-db): Idem.
      Unverified
      7b2f9e0d
  10. Jul 15, 2018
    • Clément Lassieur's avatar
      database: Call a specification 'jobset' instead of 'project'. · be713f8a
      Clément Lassieur authored
      This removes the possibility to filter specifications by branch, because
      branches were previously called 'jobset'.  But it doesn't matter because later
      on, specifications will have as many branches as inputs.  And people should
      filter by specification name instead.
      
      * doc/cuirass.texi (Build Information, Latest builds): Remove 'jobset',
      replace 'project' with 'jobset'.
      * src/cuirass/http.scm (build->hydra-build): Idem.
      * tests/database.scm (db-get-builds): Idem.
      * tests/http.scm (build-query-result, /api/latestbuilds?nr=1&jobset=guix,
      /api/latestbuilds?nr=1&jobset=gnu): Idem.
      * src/cuirass/database.scm (db-format-build, db-get-builds): Don't associate
      builds with branches (which were called 'jobset' afterwards).
      (db-get-builds): Remove the #:project filter.
      Unverified
      be713f8a
  11. Apr 08, 2018
  12. Feb 06, 2018
  13. Oct 15, 2017
  14. Oct 04, 2017
  15. Sep 19, 2017
    • Jan Nieuwenhuizen's avatar
      cuirass: Add --listen command line option. · 2a4d493e
      Jan Nieuwenhuizen authored
      * bin/cuirass.in (show-help): Add help for --listen option.
      (%options): Add listen option.
      (main): Pass host to run-cuirass-server.
      * doc/cuirass.texi (Invocation): Add --listen option.
      * src/cuirass/http.scm (run-cuirass-server): Add named #:host parameter.
      Unverified
      2a4d493e
  16. Sep 18, 2017
  17. Sep 09, 2017
    • Mathieu Othacehe's avatar
      cuirass: add Hydra compatible HTTP API. · 8a7483a3
      Mathieu Othacehe authored
      * doc/cuirass.texi (Sections)[Web API]: New section describing the HTTP API.
      * src/cuirass/http.scm (spec->json-string): Move it to utils.scm and rename it
        object->json-string.
      (object->json-scm): Move it utils.scm.
      (handle-*-request): New helpers procedures.
      (request-parameters): New procedure to parse a request query.
      (url-handler): Add new API's.
      * src/cuirass/utils.scm (object->json-scm, object->json-string): Exported
      procedures moved from http.scm.
      * tests/http.scm: Add various tests on new HTTP API.
      Unverified
      8a7483a3
    • Mathieu Othacehe's avatar
      cuirass: Store new information in database to prepare new HTTP API · e550cb6a
      Mathieu Othacehe authored
      integration.
      
      * bin/evaluate.in (fill-job): New procedure.
      (main): Use it to fill informations (nix-name, system) that will later be
      added to database.
      * doc/cuirass.texi (Database)[Derivation]: Add system and nix_name fields.
      (Database)[Builds]: Add id, status, timestamp, starttime and stoptime
      fields. Remove output field.
      (Database)[Outputs]: New table describing the build outputs.
      * src/cuirass/base.scm (build-packages): Add new fields to build object before
      adding it to database.
      * src/cuirass/database.scm (db-get-build, db-get-builds): New procedures to get
      a build by id from database and a list of builds using filter parameters
      respectively.
      * src/schema.sql (Outputs) : New table.
      (Derivations): Add system and nix_name columns.
      (Builds): Remove output column and add id, status, timestamp, starttime and
      stoptime columns.
      Unverified
      e550cb6a
  18. Aug 01, 2017
  19. May 06, 2017
  20. May 05, 2017
  21. Jan 30, 2017
  22. Jan 23, 2017
  23. Dec 29, 2016
    • Mathieu Lirzin's avatar
      cuirass: Add "--port" command line option. · 8a782b3e
      Mathieu Lirzin authored
      * bin/cuirass.in (%options): Add "--port" and "-p" command line options.
      (show-help): Adapt.
      (main): Set default to 8080.  Call 'run-cuirass-server' with this.
      * src/cuirass/http.scm (run-cuirass-server): Display the port number.
      * doc/cuirass.texi (Invocation): Document new option.
      Unverified
      8a782b3e
  24. Dec 16, 2016
  25. Dec 09, 2016
  26. Dec 05, 2016
    • Mathieu Lirzin's avatar
      doc: Add Cuirass manual. · cbdb59af
      Mathieu Lirzin authored
      * doc/cuirass.texi: New file.
      * doc/fdl-1.3.texi: Likewise.
      * Makefile.am (info_TEXINFOS, doc_cuirass_TEXINFOS): New variables.
      * dir-locals.el: Use the American dictionary for Texinfo mode.
      * .gitignore: Update.
      Unverified
      cbdb59af
Loading