//Cloudogu EcoSystem Docs

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

  1. 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.

  1. Wechsel in das Root-Verzeichnis des Portainer-Dogus (in vagrant)
  2. 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:

  1. cd app - in das Webapp-Verzeichnis wechseln
  2. yarn install - installiert die Abhängigkeiten für den Server
  3. bower install- installiert die Abhängigkeiten für das Frontend
  4. docker-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 ändern

    service_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