[[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
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
- In das Verzeichnis des FraDrive-Checkouts wechseln
nix developausführen, um die Dependencies zum Entwickeln zu installierendevelopausfü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
- Bei Fehlermeldung
- Bei neuem Checkout:
npm install - 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
- Spezielle Hardware erforderlich
- Aufwändige einmalige Einrichtung erforderlich
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:
- Pakete "git", "home-manager" und einen Editor, z.B. "vscode", installieren.
- FRADrive Git Repo klonen und hineinwechseln
- Datei
.npmrcmit Fontawesome Auth Token anlegen2 home-manager initausführen- shell hooks in
~/.config/home-manager/home.nixkonfigurieren3 - Leere Unterverzeichnisse
.stack-work-run,.stack-work-test,.stack-work-docerstellen4 direnv allowim Git-Verzeichnis ausführendevelopim Git-Verzeichnis ausführennpm installim 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
-
Könnte vermutlich nach Beauftragung durch UniWorX GmbH gelöst werden ↩︎
-
Erhältlich von UniWorX GmbH auf Anfrage, darf natürlich nicht im offenen Repo liegen! ↩︎
-
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; }; -
Weitere Details im UniWorX-Wiki ↩︎