Nächste: , Vorige: , Nach oben: Dienste   [Inhalt][Index]


12.9.26 Kontinuierliche Integration

Cuirass ist ein Werkzeug zur kontinuierlichen Integration für Guix. Es kann sowohl bei der Entwicklung helfen als auch beim Anbieten von Substituten für andere (siehe Substitute).

Das Modul (gnu services cuirass) stellt den folgenden Dienst zur Verfügung:

Scheme-Prozedur: cuirass-service-type

Der Diensttyp des Cuirass-Dienstes. Sein Wert muss ein cuirass-configuration-Verbundsobjekt sein, wie im Folgenden beschrieben.

Um Erstellungsaufträge („Build Jobs“) hinzuzufügen, müssen Sie sie im specifications-Feld der Konfiguration eintragen. Mit dem folgenden Beispiel würden alle Pakete aus dem Kanal my-channel erstellt.

(define %cuirass-specs
  #~(list (specification
           (name "my-channel")
           (build '(channels my-channel))
           (channels
            (cons (channel
                   (name 'my-channel)
                   (url "https://my-channel.git"))
                  %default-channels)))))

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

Um das Paket linux-libre, das im vorgegebenen Guix-Kanal definiert ist, zu erstellen, schreibe man die folgende Konfiguration.

(define %cuirass-specs
  #~(list (specification
           (name "my-linux")
           (build '(packages "linux-libre")))))

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

Für eine Beschreibung der anderen Konfigurationsmöglichkeiten und des Spezifikations-Verbundsobjektes selbst, siehe das Specifications in Handbuch zu Cuirass.

Die Informationen, die sich auf Erstellungsaufträge beziehen, werden direkt in deren Spezifikation festgelegt, aber globale Einstellungen des cuirass-Prozesses sind über andere Felder der cuirass-configuration zugänglich.

Datentyp: cuirass-configuration

Datentyp, der die Konfiguration von Cuirass repräsentiert.

cuirass (Vorgabe: cuirass)

Das Cuirass-Paket, das benutzt werden soll.

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

An welchen Ort die Protokolldatei geschrieben wird.

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

An welchem Ort die Protokolldatei der Weboberfläche gespeichert wird.

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

Ort, wo Repositorys zwischengespeichert werden.

user (Vorgabe: "cuirass")

Besitzer des cuirass-Prozesses.

group (Vorgabe: "cuirass")

Gruppe des Besitzers des cuirass-Prozesses.

interval (Vorgabe: 60)

Anzahl der Sekunden, bevor ein Repository wieder neu geladen wird und danach Cuirass-Aufträge behandelt werden.

parameters (Vorgabe: #f)

Parameter aus der angegebenen Parameterdatei lesen. Die unterstützten Parameter werden im Parameters in Cuirass-Handbuch beschrieben.

remote-server (Vorgabe: #f)

Ein cuirass-remote-server-configuration-Verbundsobjekt, um den Mechanismus für entfernte Erstellungen zu benutzen, oder #f, um den voreingestellten Erstellungsmechanismus zu benutzen.

database (Vorgabe: "dbname=cuirass host=/var/run/postgresql")

database als die Datenbank mit den Aufträgen und bisherigen Erstellungsergebnissen benutzen. Weil Cuirass als Datenbanktreiber PostgreSQL benutzt, muss database eine Zeichenkette sein wie "dbname=cuirass host=localhost".

port (Vorgabe: 8081)

Portnummer, die vom HTTP-Server benutzt wird.

host (Vorgabe: "localhost")

Auf der Netzwerkschnittstelle für den Rechnernamen host lauschen. Nach Vorgabe werden Verbindungen vom lokalen Rechner localhost akzeptiert.

specifications (Vorgabe: #~'())

Ein G-Ausdruck (siehe G-Ausdrücke), der zu einer Liste von Spezifikations-Verbundsobjekten ausgewertet wird. Spezifikations-Verbundsobjekte werden im Specifications in Cuirass-Handbuch beschrieben.

use-substitutes? (Vorgabe: #f)

Hierdurch wird zugelassen, Substitute zu benutzen, damit nicht jede Abhängigkeit eines Auftrags erst aus ihrem Quellcode heraus erstellt werden muss.

one-shot? (Vorgabe: #f)

Spezifikationen nur einmal auswerten und Ableitungen nur einmal erstellen.

fallback? (Vorgabe: #f)

Pakete lokal erstellen, wenn das Substituieren einer vorerstellten Binärdatei fehlschlägt.

extra-options (Vorgabe: '())

Zusätzliche Befehlszeilenoptionen, die beim Ausführen des Cuirass-Prozesses mitgegeben werden sollen.

Cuirass, entfernte Erstellung mit

Cuirass kennt zwei Mechanismen, wie damit Ableitungen erstellt werden können.

Um diesen Erstellungsmodus zu aktivieren, übergeben Sie ein cuirass-remote-server-configuration-Verbundsobjekt für das Argument remote-server des cuirass-configuration-Verbundsobjektes. Der cuirass-remote-server-configuration-Verbund wird im Folgenden beschrieben.

Dieser Erstellungsmodus skaliert wesentlich besser als der Vorgabemodus. Mit diesem Erstellungsmodus wird auch die Erstellungfarm von GNU Guix auf https://ci.guix.gnu.org betrieben. Er sollte dann bevorzugt werden, wenn Sie mit Cuirass eine große Anzahl von Paketen erstellen möchten.

Datentyp: cuirass-remote-server-configuration

Der Datentyp, der die Konfiguration des Cuirass-„remote-server“-Prozesses repräsentiert.

backend-port (Vorgabe: 5555)

Der TCP-Port, um mit remote-worker-Prozessen mit ZMQ zu kommunizieren.

log-port (Vorgabe: 5556)

Der TCP-Port des Protokollservers.

publish-port (Vorgabe: 5557)

Der TCP-Port des „Publish“-Servers, um Substitute mit anderen zu teilen.

log-file (Vorgabe: "/var/log/cuirass-remote-server.log")

An welchen Ort die Protokolldatei geschrieben wird.

cache (Vorgabe: "/var/cache/cuirass/remote")

Im cache-Verzeichnis Erstellungsprotokolldateien speichern.

trigger-url (Vorgabe: #f)

Sobald ein Substitut erfolgreich heruntergeladen wurde, wird dessen Einlagerung als Narinfo („bake the substitute“) auf trigger-url direkt ausgelöst.

publish? (Vorgabe: #t)

Wenn dies auf falsch gesetzt ist, wird kein „Publish“-Server gestartet und das publish-port-Argument ignoriert. Verwenden Sie es, wenn bereits ein eigenständiger „Publish“-Server für den „remote-server“ läuft.

public-key
private-key

Die angegebenen Dateien als das Paar aus öffentlichem und privatem Schlüssel zum Signieren veröffentlichter Store-Objekte benutzen.

Mindestens eine entfernte Arbeitermaschine („remote worker“) muss auf irgendeiner Maschine im lokalen Netzwerk gestartet werden, damit tatsächlich Erstellungen durchgeführt werden und deren Status gemeldet wird.

Datentyp: cuirass-remote-worker-configuration

Der Datentyp, der die Konfiguration des Cuirass-„remote-worker“-Prozesses repräsentiert.

cuirass (Vorgabe: cuirass)

Das Cuirass-Paket, das benutzt werden soll.

workers (Vorgabe: 1)

workers-viele parallele Arbeiterprozesse starten.

server (Vorgabe: #f)

Keine Maschinen über Avahi ermitteln, sondern stattdessen eine Verbindung zum Server unter der in server angegebenen IP-Adresse aufbauen.

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

Nur Erstellungen für die in systems angegebenen Systeme anfragen.

log-file (Vorgabe: "/var/log/cuirass-remote-worker.log")

An welchen Ort die Protokolldatei geschrieben wird.

publish-port (Vorgabe: 5558)

Der TCP-Port des „Publish“-Servers, um Substitute mit anderen zu teilen.

substitute-urls (Vorgabe: %default-substitute-urls)

Die Liste der URLs, auf denen nach Substituten gesucht wird, wenn nicht anders angegeben.

public-key
private-key

Die angegebenen Dateien als das Paar aus öffentlichem und privatem Schlüssel zum Signieren veröffentlichter Store-Objekte benutzen.

Laminar

Laminar ist ein sparsamer und modularer Dienst zur Kontinuierlichen Integration. Statt einer Weboberfläche zur Konfiguration werden versionskontrollierte Konfigurationsdateien und Skripte verwendet.

Laminar ermutigt dazu, bestehende Werkzeuge wie bash und cron zu benutzen, statt das Rad neu zu erfinden.

Scheme-Prozedur: laminar-service-type

Der Diensttyp des Laminar-Dienstes. Sein Wert muss ein laminar-configuration-Verbundsobjekt sein, wie im Folgenden beschrieben.

Alle Konfigurationswerte haben bereits vorgegebene Einstellungen. Eine minimale Konfiguration, um Laminar aufzusetzen, sehen Sie unten. Nach Vorgabe läuft die Weboberfläche auf Port 8080.

Datentyp: laminar-configuration

Datentyp, der die Konfiguration von Laminar repräsentiert.

laminar (Vorgabe: laminar)

Das Laminar-Paket, das benutzt werden soll.

home-directory (Vorgabe: "/var/lib/laminar")

Das Verzeichnis mit Auftragskonfigurationen und Verzeichnissen, in denen Aufträge ausgeführt werden („run“-Verzeichnissen).

bind-http (Vorgabe: "*:8080")

Die Netzwerkschnittstelle mit Port oder der Unix-Socket, wo laminard auf eingehende Verbindungen zur Web-Oberfläche lauschen soll.

bind-rpc (Vorgabe: "unix-abstract:laminar")

Die Netzwerkschnittstelle mit Port oder der Unix-Socket, wo laminard auf eingehende Befehle z.B. zum Auslösen einer Erstellung lauschen soll.

title (Vorgabe: "Laminar")

Der Seitentitel, der auf der Web-Oberfläche angezeigt wird.

keep-rundirs (Vorgabe: 0)

Setzen Sie dies auf eine ganze Zahl, die festlegt, wie viele Ausführungsverzeichnisse pro Auftrag vorgehalten werden. Die mit der niedrigsten Nummer werden gelöscht. Die Vorgabe ist 0, d.h. alle Ausführungsverzeichnisse werden sofort gelöscht.

archive-url (Vorgabe: #f)

Die von laminard angebotene Weboberfläche wird aus dieser URL die Verweise auf Artefakte archivierter Aufträge zusammensetzen.

base-url (Vorgabe: #f)

Was Laminar in Verweisen auf eigene Seiten als Basis-URL verwenden soll.


Nächste: Dienste zur Stromverbrauchsverwaltung, Vorige: Samba-Dienste, Nach oben: Dienste   [Inhalt][Index]