Next: , Previous: , Up: Services   [Contents][Index]

8.8.21 Continuous Integration

Cuirass is a continuous integration tool for Guix. It can be used both for development and for providing substitutes to others (see Substitutes).

The (gnu services cuirass) module provides the following service.

Scheme Procedure: cuirass-service-type

The type of the Cuirass service. Its value must be a cuirass-configuration object, as described below.

To add build jobs, you have to set the specifications field of the configuration. Here is an example of a service that polls the Guix repository and builds the packages from a manifest. Some of the packages are defined in the "custom-packages" input, which is the equivalent of GUIX_PACKAGE_PATH.

(define %cuirass-specs
     '((#:name . "my-manifest")
       (#:load-path-inputs . ("guix"))
       (#:package-path-inputs . ("custom-packages"))
       (#:proc-input . "guix")
       (#:proc-file . "build-aux/cuirass/gnu-system.scm")
       (#:proc . cuirass-jobs)
       (#:proc-args . ((subset . "manifests")
                       (systems . ("x86_64-linux"))
                       (manifests . (("config" . "guix/manifest.scm")))))
       (#:inputs . (((#:name . "guix")
                     (#:url . "git://")
                     (#:load-path . ".")
                     (#:branch . "master")
                     (#:no-compile? . #t))
                    ((#:name . "config")
                     (#:url . "")
                     (#:load-path . ".")
                     (#:branch . "master")
                     (#:no-compile? . #t))
                    ((#:name . "custom-packages")
                     (#:url . "")
                     (#:load-path . ".")
                     (#:branch . "master")
                     (#:no-compile? . #t)))))))

(service cuirass-service-type
          (specifications %cuirass-specs)))

While information related to build jobs is located directly in the specifications, global settings for the cuirass process are accessible in other cuirass-configuration fields.

Data Type: cuirass-configuration

Data type representing the configuration of Cuirass.

log-file (default: "/var/log/cuirass.log")

Location of the log file.

web-log-file (default: "/var/log/cuirass-web.log")

Location of the log file used by the web interface.

cache-directory (default: "/var/cache/cuirass")

Location of the repository cache.

user (default: "cuirass")

Owner of the cuirass process.

group (default: "cuirass")

Owner’s group of the cuirass process.

interval (default: 60)

Number of seconds between the poll of the repositories followed by the Cuirass jobs.

database (default: "/var/lib/cuirass/cuirass.db")

Location of sqlite database which contains the build results and previously added specifications.

ttl (default: (* 30 24 3600))

Specifies the time-to-live (TTL) in seconds of garbage collector roots that are registered for build results. This means that build results are protected from garbage collection for at least ttl seconds.

port (default: 8081)

Port number used by the HTTP server.

host (default: "localhost")

Listen on the network interface for host. The default is to accept connections from localhost.

specifications (default: #~'())

A gexp (see G-Expressions) that evaluates to a list of specifications, where a specification is an association list (see Associations Lists in GNU Guile Reference Manual) whose keys are keywords (#:keyword-example) as shown in the example above.

use-substitutes? (default: #f)

This allows using substitutes to avoid building every dependencies of a job from source.

one-shot? (default: #f)

Only evaluate specifications and build derivations once.

fallback? (default: #f)

When substituting a pre-built binary fails, fall back to building packages locally.

extra-options (default: '())

Extra options to pass when running the Cuirass processes.

cuirass (default: cuirass)

The Cuirass package to use.

Next: , Previous: , Up: Services   [Contents][Index]