Siguiente: , Anterior: , Subir: Servicios   [Índice general][Índice]


10.8.23 Integración continua

Cuirass es una herramienta de integración continua para Guix. Puede usarse tanto para el desarrollo como para proporcionar sustituciones a otras personas (véase Sustituciones).

El módulo (gnu services cuirass) proporciona el siguiente servicio.

Procedimiento Scheme: cuirass-service-type

El tipo del servicio Cuirass. Su valor debe ser un objeto cuirass-configuration, como se describe a continuación.

Para añadir trabajos de construcción, debe proporcionarlos en el campo specifications de la configuración. A continuación se encuentra un ejemplo de un servicio que consulta el repositorio de Guix y construye los paquetes de un manifiesto. Algunos de los paquetes se definen en la entrada "custom-packages", que es el equivalente de GUIX_PACKAGE_PATH.

(define %especificacion-de-cuirass
  #~(list
     '((#:name . "mi-manifiesto")
       (#:load-path-inputs . ("guix"))
       (#:package-path-inputs . ("paquetes-personalizados"))
       (#: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://git.savannah.gnu.org/guix.git")
                     (#:load-path . ".")
                     (#:branch . "master")
                     (#:no-compile? . #t))
                    ((#:name . "config")
                     (#:url . "https://git.example.org/config.git")
                     (#:load-path . ".")
                     (#:branch . "master")
                     (#:no-compile? . #t))
                    ((#:name . "paquetes-personalizados")
                     (#:url . "https://git.example.org/paquetes-personalizados.git")
                     (#:load-path . ".")
                     (#:branch . "master")
                     (#:no-compile? . #t)))))))

(service cuirass-service-type
         (cuirass-configuration
          (specifications %especificacion-de-cuirass)))

Mientras que la información de los trabajos de construcción se encuentra directamente en las especificaciones, la configuración global del proceso cuirass está accesible en otros campos de cuirass-configuration.

Tipo de datos: cuirass-configuration

Tipo de datos que representa la configuración de Cuirass.

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

Localización del archivo de registro.

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

Localización del archivo de registro usado por la interfaz web.

queries-log-file (predeterminado: #f)

Location of the SQL queries log file. By default, SQL queries logging is disabled.

web-queries-log-file (predeterminado: #f)

Location of the web SQL queries log file. By default, web SQL queries logging is disabled.

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

Localización de la caché del repositorio.

user (predeterminado: "cuirass")

Propietaria del proceso cuirass.

group (predeterminado: "cuirass")

Grupo propietario del proceso cuirass.

interval (predeterminado: 60)

Número de segundos entre las consulta de repositorios seguida de los trabajos de Cuirass.

queue-size (default: 1)

Size of the database writer queue.

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

Ruta de la base de datos sqlite que contiene los resultados de construcción y las especificaciones añadidas previamente.

ttl (predeterminado: (* 30 24 3600))

Especifica el tiempo de vida (TTL) en segundos de las raíces del recolector de basura que se registran con resultados de construcciones. Esto significa que los resultados de las construcciones se protegen de la recolección de basura al menos ttl segundos.

port (predeterminado: 8081)

Número de puerto usado por el servidor HTTP.

host (predeterminado: "localhost")

Escucha en la interfaz de red de la dirección host. El comportamiento predeterminado es aceptar conexiones desde la red local.

specifications (predeterminada: #~'())

Una expresión-G (véase Expresiones-G) que evalúa a una lista de especificaciones, donde una especificación es una lista asociativa (véase Associations Lists en GNU Guile Reference Manual) cuyas claves son palabras claves (#:ejemplo-de-palabra-clave) como se muestra en el ejemplo anterior.

use-substitutes? (predeterminado: #f)

Permite el uso de sustituciones para evitar la construcción desde las fuentes de todas las dependencias de un trabajo.

one-shot? (predeterminado: #f)

Evalúa las especificaciones y construye las derivaciones solo una vez.

fallback? (predeterminado: #f)

Cuando la sustitución de un binario preconstruido falle, se intentará la construcción local de los paquetes.

extra-options (predeterminadas: '())

Opciones adicionales proporcionadas a los procesos de Cuirass.

cuirass (predeterminado: cuirass)

El paquete Cuirass usado.

Simple Cuirass

The Cuirass service configuration described above can be a little intimidating. In particular, getting the right specifications can prove difficult. The simple-cuirass-configuration->specs procedure offers a way to generate those specifications and thus setup a continuous integration server more readily.

Scheme Procedure: simple-cuirass-configuration->specs configuration

This procedure takes a simple-cuirass-configuration record as argument and returns the corresponding Cuirass specifications gexp.

Data Type: simple-cuirass-configuration

Data type representing the configuration of a simple Cuirass instance.

build (default: all)

The packages to be built by Cuirass. It defaults to all, which means that all the discovered packages in the subsequent channels field are to be selected.

It is also possible to set this field to a list of build-manifest records, so that only the packages that are part of the declared manifests are built. This record is described below.

Data Type: build-manifest
channel-name

The name of the channel where the manifest is located.

manifest

The manifest path inside the channel.

channels (predeterminados: %default-channels)

The channels to be fetched by Cuirass (véase Canales).

non-package-channels (default: '())

List the channel names that must not be searched for packages. That is often the case for the channel containing the manifest.

systems (default: (list (%current-system)))

Build every discovered package for each system in this list. By default only the current system is selected.

Here is an example of how to setup a Cuirass instance that builds all the packages declared by Guix and a user repository. The package list is re-evaluated each time a commit is pushed in one of the declared channels.

(service cuirass-service-type
         (cuirass-configuration
          (specifications
           (simple-cuirass-configuration->specs
            (simple-cuirass-configuration
             (build 'all)
             (channels (cons (channel
                              (name 'my-guix)
                              (url "https://my-git-repo/guix.git"))
                             %default-channels)))))))

In the same spirit, this builds all the packages that are part of the guix or my-guix channels and declared in the manifest located in the conf channel.

(service cuirass-service-type
         (cuirass-configuration
          (specifications
           (simple-cuirass-configuration->specs
            (simple-cuirass-configuration
             (build (list
                     (build-manifest
                      (channel-name 'conf)
                      (manifest "guix/manifest.scm"))))
             (channels (cons* (channel
                               (name 'my-guix)
                               (url "https://my-git-repo/guix.git"))
                              (channel
                               (name 'conf)
                               (url "https://my-git-repo/conf.git"))
                              %default-channels))
             (non-package-channels '(conf)))))))

Finally, simple-cuirass-services takes as a second optional argument a cuirass-configuration record. It can be used to customize the configuration of the Cuirass instance.

(simple-cuirass-services
 (simple-cuirass-configuration
  (build 'all)
  (channels (cons (channel
                   (name 'my-guix)
                   (url "https://my-git-repo/guix.git"))
                  %default-channels))
  (non-package-channels '(conf)))
 (cuirass-configuration
  (inherit %default-cuirass-config)
  (host "0.0.0.0"))) ;listen on all interfaces.

Siguiente: , Anterior: , Subir: Servicios   [Índice general][Índice]