5 Entwicklungsumgebung
Sarah Vaupel edited this page 2024-04-29 14:34:35 +00:00

[[TOC]]

Option 1 - SSH

Eine fertige Entwicklungsumgebung für FRADrive wird auf den Server der UniWorX GmbH bereitgestellt. Zur Nutzung ist ssh notwendig. Um einen bequemeren Editor lokal laufen lassen zu können, wird zusätzlich sshfs benötigt.

Nachteile

  • Funktioniert nicht im Intranet der Fraport AG
  • Dauerhafte Online Verbindung notwendig
  • Dateioperationen, wie z.B. Suchen in Dateien, ist sehr langsam
  • Build Geschwindigkeit variiert mit der Auslastung des Servers

Vorteile

  • Keine sonstigen Installation notwendig
  • Build/Test/Release können nach ausloggen alleine weiter laufen (z.B. durch Verwendung von tmux)

Release-Prozedur auf Entwicklungs-Server

  1. ssh srv01.uniworx.de
    • Bei Permisssion Denied oder Passwortabfrage bitte den persönlichen SSH-PubKey (falls nicht existent, ein neues SSH-Schlüsselpaar erzeugen) an sarah.vaupel@uniworx.de schicken; der PubKey wird dann serverseitig zur Authentifizierung hinterlegt werden
  2. In das Verzeichnis des FraDrive-Checkouts wechseln
  3. nix develop ausführen, um die Dependencies zum Entwickeln zu installieren
  4. develop ausführen, um die Dependencies zur Entwicklung zu konfigurieren
    • Bei Fehlermeldung in develop (o.Ä.): Mit 2x Strg-D Umgebung beenden und von Punkt 3 aus fortfahren
    • Falls das nicht klappt, pkill -u <username> ausführen und von Punkt 1 aus fortfahren
  5. Bei neuem Checkout: npm install
  6. Jetzt sollte die Umgebung für gewünschte Entwicklungskommandos (z.B. npm run build, ./db.sh -cf && npm run start, npm run test, npm run release, ...) verwendbar sein

Option 2 - Browser

Es ist möglich den im Gitlab integrierten VSCode im Browser zu nutzen. Dies funktioniert auch mit einem Browser im Intranet der Fraport AG.

Nachteile

  • Dauerhafte Online Verbindung notwendig
  • Online-Editor bietet nur eingeschränkte Möglichkeiten
  • Kompilation nur durch Commit möglich, keine Tests vor dem Commit1
  • Kein Anstoßen eines Releases möglich1

Vorteile

  • Keine sonstigen Installation notwendig
  • Funktioniert auf BüKo Hardware im Intranet der Fraport AG

Option 3 - Standalone-PC

Dedizierter Rechner mit git, ssh und einem Editor.

Nachteile

Vorteile

  • Es kann offline entwickelt werden
  • Kann bei leistungsfähiger Hardware schneller sein
  • Dateioperationen, wie Suchen in Dateien sind extrem schnell

Einrichtung Standalone-PC

Der Rechner kann mit Windows per WSL (Windows-Subsystem-for-Linux) oder direkt einem beliebigen Linux betrieben werden. Dort muss jeweils eine Nix-Shell vorhanden sein, welche dann die benötigten Kompilations-Werkzeuge in der passenden Version selbständig einrichtet.

Am einfachsten funktioniert das natürlich direkt mit NixOS. Nach der Installation waren noch folgende Schritte einmalig notwendig:

  1. Pakete "git", "home-manager" und einen Editor, z.B. "vscode", installieren.
  2. FRADrive Git Repo klonen und hineinwechseln
  3. Datei .npmrc mit Fontawesome Auth Token anlegen2
  4. home-manager init ausführen
  5. shell hooks in ~/.config/home-manager/home.nix konfigurieren3
  6. Leere Unterverzeichnisse .stack-work-run, .stack-work-test, .stack-work-doc erstellen4
  7. direnv allow im Git-Verzeichnis ausführen
  8. develop im Git-Verzeichnis ausführen
  9. npm install im Git-Verzeichnis ausführen

Die Entwicklungsumgebung ist dann bereit, z.B. mit npm run build bauen oder mit ./db.sh -cf && npm run start lokal ausführen.

Achtung: Nach jedem Neustart ist develop neu auszuführen. Ob develop aktiv ist oder nicht, kann mit in-develop abgefragt werdeb,

Fussnoten


  1. Könnte vermutlich nach Beauftragung durch UniWorX GmbH gelöst werden ↩︎

  2. Erhältlich von UniWorX GmbH auf Anfrage, darf natürlich nicht im offenen Repo liegen! ↩︎

  3. Home-manager shell hooks (die ersten 2 Zeilen gehören nicht dazu und zeigen nur, wo die Hooks eingebaut werden könnten:

       # Let Home Manager install and manage itself.
       programs.home-manager.enable = true; 
    
       programs.bash.enable = true;
         programs.bash.initExtra = ''
         eval "$(${pkgs.direnv}/bin/direnv hook bash)"    
       '';
       programs.zsh.initExtra = ''
         eval "$(${pkgs.direnv}/bin/direnv hook zsh)"
         echo "Thanks for nix!"
       '';
    
       programs.direnv = {
         enable = true;
         nix-direnv.enable = true;
       };         
    
    
    
    
    ↩︎
  4. Weitere Details im UniWorX-Wiki ↩︎