Nächste: , Vorige: , Nach oben: Software-Entwicklung   [Inhalt][Index]


7.5 Stufe 3: Kontinuierliche Integration einrichten

Mit dem oben definierten Kanal (siehe Stufe 2: Das Repository als Kanal) können wir erst recht etwas anstellen, sobald wir Kontinuierliche Integration (Continuous Integration, CI) eingerichtet haben. Hier gibt es mehrere Wege zum Ziel.

Sie können ein dem Mainstream entsprechendes Werkzeug zur kontinuierlichen Integration nehmen wie GitLab-CI. Dazu müssen Sie Aufgaben („Jobs“) in einem Docker-Abbild oder einer virtuellen Maschine, auf der Guix installiert ist, ausführen lassen. Wenn wir das für Guile vorhätten, legten wir eine Aufgabe an, die einen Shell-Befehl wie diesen laufen lässt:

guix build -L $PWD/.guix/modules guile@3.0.99-git

So klappt es gut und der Vorteil ist, dass Sie den Befehl leicht Ihrer bevorzugten CI-Plattform beibringen können.

Aber trotzdem können Sie Guix am besten ausnutzen, wenn Sie Cuirass verwenden, ein CI-Werkzeug speziell für Guix und eng damit integriert. Cuirass zu benutzen statt einem CI-Werkzeug, das jemand für Sie hostet, macht mehr Aufwand, aber die Einrichtung hält sich in Grenzen, wenn Sie Cuirass’ Dienst auf Guix System benutzen (siehe Kontinuierliche Integration in Referenzhandbuch zu GNU Guix). Kehren wir zu unserem Beispiel zurück, statten wir Cuirass mit so einer Spezifikationsdatei aus:

;; Cuirass-Spezifikationsdatei, um alle Pakete des ‚guile‘-Kanals zu erstellen.
(list (specification
        (name "guile")
        (build '(channels guile))
        (channels
         (append (list (channel
                         (name 'guile)
                         (url "https://git.savannah.gnu.org/git/guile.git")
                         (branch "main")))
                 %default-channels))))

Es gibt zwei wichtige Unterschiede zu dem, was Sie mit anderen CI-Werkzeugen tun würden:

Aus Entwicklersicht sieht das Ergebnis am Ende so aus wie die auf Guiles Status-Seite aufgelisteten Auswertungen: Jede Auswertung besteht aus einer Kombination von Commits der guix- und guile-Kanäle, wovon es mehrere Aufträge (Jobs) gibt – je einen Job pro Paket, das in guile-package.scm definiert ist, mal der Anzahl der Zielarchitekturen.

Substitute gibt es kostenlos dazu! Zum Beispiel kann jeder, weil unser guile-Jobset auf ci.guix.gnu.org erstellt wird und dort guix publish (siehe Aufruf von guix publish in Referenzhandbuch zu GNU Guix) zusätzlich zu Cuirass läuft, automatisch die Substitute für guile-Erstellungen von ci.guix.gnu.org beziehen; es ist dazu kein Mehraufwand nötig.


Nächste: Bonus: Erstellungs-Manifest, Vorige: Bonus: Paketvarianten, Nach oben: Software-Entwicklung   [Inhalt][Index]