2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/guix-cuirass.git synced 2023-12-14 06:03:04 +01:00
Cuirass continuous integration tool https://git.savannah.gnu.org/cgit/guix/guix-cuirass.git
Go to file
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
bin Separate web interface. 2019-08-10 13:46:55 +02:00
build-aux build-aux: Add guile-fibers. 2018-01-29 17:13:57 +01:00
doc base: Register GC roots for build results. 2018-11-07 15:28:05 +01:00
examples examples: random: Fail evaluation once in a while. 2018-11-07 15:28:05 +01:00
src Switch to Guile-JSON 3.x. 2019-08-17 18:48:34 +02:00
tests Switch to Guile-JSON 3.x. 2019-08-17 18:48:34 +02:00
.dir-locals.el database: Serialize all database accesses in a thread. 2018-08-16 19:19:23 +02:00
.gitignore Augment '.gitignore'. 2018-01-22 13:29:55 +01:00
bootstrap build: Add 'bootstrap' script. 2016-08-02 19:04:53 +02:00
configure.ac Introduce concurrency with Fibers. 2018-01-22 23:39:51 +01:00
COPYING Initial commit. 2016-05-29 19:53:17 +02:00
Makefile.am database: Add builds only if one of their outputs is new. 2018-09-29 22:29:06 +02:00
README Switch to Guile-JSON 3.x. 2019-08-17 18:48:34 +02:00

Cuirass is a continuous integration tool using GNU Guix.  It is intended as a
replacement for Hydra.

Requirements
============

Cuirass currently depends on the following packages:

  - GNU Guile 2.0.9 or later
  - GNU Guix (and all its development dependencies)
  - GNU Make
  - Guile-JSON 3.x
  - Guile-SQLite3
  - Guile-Git
  - Fibers

A convenient way to install those dependencies is to install Guix and execute
the following command:

   $ guix environment -l build-aux/guix.scm

This will build and enter an environment which provides all the necessary
dependencies.

Build Instructions
==================

When all the dependencies are available on you system, in order to build and
install Cuirass, you can proceed with the usual:

   $ ./configure && sudo make install

An alternative way is to directly install Cuirass in your Guix profile, using:

   $ guix package -f build-aux/guix.scm

To build it, but not install it, run:

   $ guix build -f build-aux/guix.scm

Example
=======

A quick way to manually test Cuirass is to execute:

  ./pre-inst-env cuirass --specifications=examples/hello-singleton.scm --database=test.db

This will read the file "examples/hello-singleton.scm" which contains a list of
specifications and add them to the database "test.db" which is created if it
doesn't already exist.

'cuirass' then loops evaluating/building the specs.  The database keeps track
of the specifications in order to allow users to accumulate specifications.
To resume the evaluation/build process you can execute the same command
without the '--specifications' option:

  ./pre-inst-env cuirass --database=test.db

To start the web interface run:

  ./pre-inst-env cuirass --web

Contributing
============

See the manual for useful hacking informations, by running

  info -f doc/cuirass.info "Contributing"