Entwickler-Guide
Dieser Artikel ist für all jene geeignet, welche an dem Cockpit-Dogu entwickeln möchten. Er beschreibt alle notwendigen Abläufe von dem Aufsetzen der IDE bis zum Erstellen des Dogus. Hierbei unterscheiden wir an Änderungen am Dogu und an dem Cockpit.
Voraussetzungen
-
Es ist notwendig die folgenden Programme zu installieren:
- git - siehe Link
- Node.js - siehe Link - benötigte Version: 12.14.0
- npm - siehe Link - benötigte Version: ^6.13.4
- yarn -
npm install --global yarn
- Ruby - siehe Link
- SQLite - siehe Link
- docker-compose - siehe Link
- Bower -
npm install --global bower
- Gulp -
npm install --global gulp --force
/ möglicherweise muss im Anschluss eine neue Shell gestartet werden
Aufsetzten der Entwicklungsumgebung
-
Klone das Repository:
git clone https://github.com/cloudogu/cockpit.git
Entwicklung am Cockpit-Dogu
Voraussetzungen
- Eine laufende Vagrant-Maschine für das CES
Cockpit-Dogu Bauen
Der Buildprozess des Dogus wird immer in der Vagrant-Maschine ausgeführt.
- Wechsel in das Root-Verzeichnis des Portainer-Dogus (in vagrant)
-
Baue das Dogu
cesapp build .
Jetzt sollte das Dogu automatisch gebaut, aktualisiert, und gestartet werden.
Entwicklung an der Cockpit-Webapp
Voraussetzungen
Für eine lokale Entwicklung müssen die Abhängigkeiten der Webapp installiert werden:
cd app
- in das Webapp-Verzeichnis wechselnyarn install
- installiert die Abhängigkeiten für den Serverbower install
- installiert die Abhängigkeiten für das Frontenddocker-compose up
- startet einen PostgresSQL Container
Lokalen Entwicklungsserver starten
Mit dem Befehl gulp serve
wird ein lokaler Entwicklungsserver gestartet.
Der Befehl sollte automatisch den Client in Ihrem Browser öffnen, wenn er abgeschlossen ist.
Webapp Tests ausführen
Mit den folgenden Befehlen werden die Unit-Tests mit karma ausgeführt. docker-compose
etc sind für diese Tests nicht nötig:
cd app
yarn install
yarn test
Einige Fehlertests erzeugen eine Ausgabe auf der Error-Console. Diese können ignoriert werden, solange der Tests erfolgreich absolviert wird.
Lokales Cockpit mit Remote laufendem EcoSystem-CAS einrichten
Auszuführen im EcoSystem
Als Erstes muss der Entwicklungsmodus des CAS aktiviert werden, indem der Befehl etcdctl set /config/_global/stage development
innerhalb des EcoSystems ausführen wird.
Danach muss der CAS neugestartet werden.
Lokal auszuführen
Setzen Sie die notwendigen Informationen in der Datei app/server/config/environment/development.js
:
casEnabled: true,
fqdn: 'http://[HOST-IP]:[PORT]',
casUrl: 'https://[CAS-SERVICE-IP]/cas',
https: false
Setze die Umgebung in der startup.sh
auf development
:
NODE_ENV=development node server/
Fehlerbehebung (lokale Einrichtung):
-
Wenn Sie Probleme mit den Zertifikaten haben, können Sie die folgenden Einträge in der
express.js
ändernservice_url: 'http://'+config.fqdn+'/cockpit', proxyCallback_url: 'http://'+config.fqdn+'/cockpit/api/v1/pgtCallback',
Über Welcome-Dashboards
Welcome-Dashboards wirken sich nur auf die Benutzer:innen aus, die noch nie das Cockpit verwendet haben. Selbst nach Accountlöschung bleibt das einmal erzeugte Dashboard in der Datenbank dem Account zugeordnet. Das Welcome-Dashboard kann durch Werte aus dem Konfigurationsschlüssel welcomeDashboard
zum Container-Start überschrieben werden.
Zum Testen eignet sich folgendes, leeres Dashboard, da das Dogu-Image bereits ein Standard-Welcome-Dashboard in /resources/welcome.json
mitbringt.
{"title":"Admin-Info Box","structure":"4-8","rows":[{"columns":[{"styleClass":"col-md-4","widgets":[],"cid":"1638872597834-3"},{"styleClass":"col-md-8","widgets":[],"cid":"1638872597834-4"}]}],"dashboardId":1,"titleTemplateUrl":"app/dashboard/partials/custom-dashboard-title.html","modal":{},"pinned":false,"write Access":true,"writeAccess":true}
Dieses Dashboard kann z. B. mittel etcdctl set config/cockpit/welcomeDashboard '...'
importiert werden. Die neue Welcome-Dashboard-Datei wird aber erst mit dem nächsten Container-Neustart erzeugt/überschrieben. Dies lässt sich überprüfen, in dem die Datei ausgegeben wird:
docker exec -it cockpit cat resources/welcome.json