Nächste: Bonus: Erstellungs-Manifest, Vorige: Bonus: Paketvarianten, Nach oben: Software-Entwicklung [Inhalt][Index]
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:
guile
und
guix
. Tatsächlich zählen viele Pakete vom guix
-Kanal zu den
Abhängigkeiten des von uns entwickelten guile
-Pakets – GCC, GNU
libc, libffi und weitere. Es kann passieren, dass sich die Pakete vom
guix
-Kanal ändern und dadurch die Erstellung unseres
guile
-Pakets schiefgeht; so etwas wollen wir als die Entwickler von
Guile so früh erfahren, wie es nur geht.
guile
-Kanals transparent zur Verfügung gestellt werden!
(Siehe Substitute in Referenzhandbuch zu GNU Guix für
Hintergrundwissen zu Substituten.)
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]