Zum Inhalt springen

Swift Packages auf Linux-Kompatibilität testen – direkt vom Mac

Du fragst dich, wie du die Linux-Kompatibilität deines Swift-Codes vom Mac aus testen kannst, ohne dich in Docker einarbeiten zu müssen? In diesem Artikel zeige ich dir einen einfachen Befehl, der den Prozess mühelos macht!

Swift Packages auf Linux-Kompatibilität testen – direkt vom Mac

Vor Kurzem stand ich vor der Situation, dass ich Swift-Netzwerkcode aus einer meiner Apps extrahieren musste, um ihn auf einem Vapor-Server wiederzuverwenden. Während der Code auf meinem Mac einwandfrei baute, stieß ich beim Deployment auf meinen Server auf mehrere Fehler. Das hat mich dazu gebracht, nach einer Möglichkeit zu suchen, die Linux-Kompatibilität des Codes einfach zu testen – denn Linux ist das Betriebssystem, das typischerweise auf Servern läuft. Zum Glück fand ich diesen Artikel von Ole Begemann aus dem Jahr 2020, der mir erspart hat, Docker von Grund auf lernen zu müssen.

In seinem Artikel beschreibt Ole einen unkomplizierten Ansatz, Swift-Code in einer Linux-Umgebung mit einem einzigen Befehl auszuführen. Du musst dafür lediglich die kostenlose Docker Desktop App auf deinem Mac installieren. Aber der Befehl schien mir recht lang und schwer zu merken, also wollte ich das Ganze noch weiter vereinfachen. Am Ende hatte ich einen Ansatz, bei dem ich mir nur swift-linux merken musste. So geht’s:

Den Docker-Befehl vereinfachen

Zunächst habe ich Oles Befehl für Kürze weiter vereinfacht:

docker run --rm -it -v "$(pwd):/src" -w "/src" swift

Erklärung des Befehls (falls es dich interessiert):

  • docker run: Dieser Befehl erstellt und startet einen Container.

  • --rm: Entfernt den Container automatisch, wenn er beendet wird.

  • -it: Führt den Container im interaktiven Modus mit angeschlossenem Terminal aus.

  • -v "$(pwd):/src": Bindet das aktuelle Verzeichnis ($(pwd)) an /src im Container ein, sodass du auf deine Swift-Dateien zugreifen kannst.

  • -w "/src": Setzt das Arbeitsverzeichnis im Container auf /src.

  • swift: Gibt das zu verwendende Swift-Docker-Image an.

Beachte, dass ich auch die Option --privileged aus Oles Befehl aus Sicherheitsgründen entfernt habe, da sie zum Testen von Swift Packages selten benötigt wird.

Einen praktischen Alias hinzufügen

Um das Ausführen dieses Befehls einfacher zu machen, habe ich einen Alias zu meiner ~/.zshrc-Datei hinzugefügt (z.B. über touch ~/.zshrc). Das ist eine Konfigurationsdatei für die Zsh-Shell, die heutzutage die Standard-Shell auf macOS ist. So geht’s:

  • Terminal öffnen

  • Die ~/.zshrc-Datei bearbeiten Du kannst TextEdit verwenden, den vorinstallierten Texteditor auf macOS. Führe einfach aus: open ~/.zshrc

  • Den Alias hinzufügen Scrolle zum Ende der Datei und füge die folgende Zeile hinzu:

alias swift-linux='docker run --rm -it -v "$(pwd):/src" -w "/src" swift'
  • Datei speichern und schließen

  • Änderungen anwenden Führe den folgenden Befehl aus, um deine Konfigurationsdatei neu zu laden: source ~/.zshrc

Befehle in einer Linux-Umgebung ausführen

Jetzt, da der Alias eingerichtet ist, kannst du deinen Swift-Code ganz einfach direkt von deinem Mac aus in einer Linux-Umgebung testen. Navigiere einfach im Terminal zu deinem Projektverzeichnis und führe aus:

swift-linux

Beim ersten Mal dauert der Download des Linux-Containers etwas.

Dieser Befehl versetzt dich in eine Linux-Umgebung, in der du je nach Bedarf swift build oder swift test ausführen kannst. Tippe einfach exit ein, um zu deinem Mac zurückzukehren. So kannst du schnell überprüfen, ob alles wie erwartet funktioniert, und Fehler erkennen, bevor du auf deinen Server deployest.

Und alles, was du dir merken musst, ist swift-linux!

Hat dir dieser Beitrag gefallen? Folge mir auf Bluesky und Mastodon für mehr Swift-Tipps und Indie-Dev-Updates.