Zum Inhalt

Konfiguration

Die Einstellungen stehen in _config/pipe.config im Arbeitsordner der App (im Abschnitt Pipe, JSON mit Kommentaren). Fehlt die Datei beim Start, legt die App sie aus der Vorlage _setup/proto/pipe.config an; danach passt du sie an. appsettings.json enthält nur ASP.NET-Core-Einstellungen wie Logging. Umgebungsvariablen und die Kommandozeile überschreiben pipe.config. Die Startskripte im ZIP setzen die Ordner als Umgebungsvariablen.

Die Anmeldung hat eine eigene Datei _config/auth.config, die genauso aus _setup/proto/auth.config entsteht (siehe Anmeldung).

Im Docker-Image ist /app/_config ein Volume, damit die Dateien Updates überstehen.

Konfiguration über Updates behalten

Die Variable PIPE_CONFIG_PATH verlegt den Ordner _config. Die Startskripte und gview-pipe-service.bat install setzen sie auf <root>\_config, neben die Versionsordner. So hat jede Installation (jeder Root-Ordner) ihre eigene pipe.config und behält sie über Updates. Beim ersten Start legt die App sie dort aus der Vorlage an. Bearbeite <root>\_config\pipe.config; der Versionsordner hat kein eigenes _config.

Einstellungen

Schlüssel Vorgabe Bedeutung
Pipe:DataPath data Ordner für workflows/, groups.json, executions/, credentials/ und die Data-Protection-keys/.
Pipe:DocsPath docs Ordner mit der gebauten Dokumentation, die unter /docs ausgeliefert wird. ZIP und Docker-Image enthalten sie. Ohne ihn gibt es weder /docs noch den Docs-Link.
Pipe:PluginPath plugins Ordner mit externen Plugins, je Plugin ein Unterordner: plugins/<Name>/<Name>.dll.
Pipe:FileRoots files → files Ordner, die Read File und Write File benutzen dürfen, nach Namen. Außerhalb davon ist nichts erreichbar.
Pipe:Scripts:ScriptRoots scripts → scripts Skriptordner für die Skript-Nodes, nach Namen (siehe Skripte ausführen).
Pipe:Scripts:GitServers keine Git-Server für Run Scripts Repo.
Pipe:Scripts:RepositoriesPath data/script-repos Wohin Repositories für einen Lauf geklont werden.
Pipe:Scripts:Interpreters keine Interpreter je Dateiendung, zum Beispiel .py → C:\Python313\python.exe.
Pipe:Scripts:GitPath git Die git-Kommandozeile.
Pipe:Environment DEFAULT Das Environment, in dem diese Instanz läuft.
Pipe:Environments TEST, STAGE, PROD Environments, die Gruppen und Workflows neben DEFAULT wählen können.
Pipe:Variables keine Instanz-Variablen je Environment.
Pipe:SecretVariables keine Namen von Instanz-Variablen, die in Logs und Skriptausgaben maskiert werden.
Pipe:ErrorWorkflowId keine Id des Fehler-Workflows für alle Workflows, deren Gruppe und Workflow keinen festlegen, zum Beispiel error-mail.
Pipe:PublicUrl keine Adresse, unter der Benutzer die App öffnen, zum Beispiel https://pipe.example.com. Fehler-Workflows bekommen einen Link zum fehlgeschlagenen Lauf (execution.url).
Pipe:ExecutionRetention 50 Executions, die je Workflow behalten werden. Ein Workflow kann einen eigenen Wert setzen.
Pipe:ExecutionRetentionDays 0 Tage, die Executions behalten werden; 0 bedeutet keine Grenze. Ein Workflow kann einen eigenen Wert setzen. Ältere Executions werden einmal am Tag und nach jedem Lauf gelöscht.
Pipe:AuditRetentionDays 365 Tage, die das Audit-Log behalten wird, in ganzen Monaten; 0 bedeutet keine Grenze.

Relative Pfade gelten relativ zum Arbeitsordner der App.

Beispiel (_config/pipe.config):

{
  "Pipe": {
    "DataPath": "D:\\gview-pipe\\data",
    "FileRoots": {
      "import": "D:\\exchange\\import",
      "export": "D:\\exchange\\export"
    }
  }
}

Ein Workflow nennt den Ordner (import) und einen Pfad darin. Er kann den Ordner nicht verlassen.

Environments und Variablen

Jede Instanz läuft in einem Environment: ein Testserver in TEST, der Produktionsserver in PROD. Gruppen und Workflows erben es, wenn sie kein eigenes setzen, siehe Variablen und Environments. Anwender können das Environment der Instanz in der App nicht ändern.

{
  "Pipe": {
    "Environment": "PROD",
    "Environments": [ "TEST", "STAGE", "PROD" ],
    "Variables": {
      "DATABASE_SERVER": { "DEFAULT": "db-test", "PROD": "db-prod" },
      "DATABASE_PASSWORD": { "PROD": "..." }
    },
    "SecretVariables": [ "DATABASE_PASSWORD" ]
  }
}

Variablen der Konfiguration sind die unterste Ebene. Werte, die auf der Seite Variables der App eingetragen werden, gewinnen je Environment gegen sie. Die App speichert sie in variables.json im Datenordner; geheime Werte werden mit den Schlüsseln in keys/ verschlüsselt. Geheime Werte von Gruppen und Workflows werden genauso verschlüsselt, eine Workflow-Datei, die in eine andere Installation kopiert wird, verliert sie also.

Umgebungsvariablen

Für die Verschachtelung nimmst du zwei Unterstriche:

Pipe__DataPath=/var/lib/gview-pipe/data
Pipe__FileRoots__import=/srv/import
Pipe__Scripts__ScriptRoots__scripts=/srv/scripts
Pipe__Scripts__GitServers__company__Url=https://git.example.com
Pipe__Environment=PROD
Pipe__Variables__DATABASE_SERVER__PROD=db-prod

Lauschadresse

Die Startskripte lauschen standardmäßig auf http://localhost:5100. Um das zu ändern, etwa für eine zweite Instanz auf demselben Rechner, setze urls oben in pipe.config (neben Pipe, nicht darin):

{
  "urls": "http://localhost:5101",
  "Pipe": { ... }
}

urls in pipe.config gewinnt gegen ASPNETCORE_URLS; --urls auf der Kommandozeile gewinnt gegen beide. Der Windows-Dienst übergibt seinen Port mit --urls (gview-pipe-service.bat install <name> <port>). Das Docker-Image nutzt http://*:8080.

Grenzen, die nicht in der Konfiguration stehen

Einige Optionen lassen sich nur im Code setzen (Program.cs des Shell), zum Beispiel wie lange ein Wait-Node höchstens wartet (eine Stunde), die JavaScript-Grenzen und die maximale Body-Größe eines Webhooks (10 MB). Frag deinen Entwickler, wenn du sie ändern willst.

Pro Workflow stellst du die maximale Zahl gleichzeitiger Läufe (Vorgabe 1) im Workflow-Panel des Editors ein. Weitere gleichzeitige Läufe werden übersprungen, und ein Webhook-Aufrufer bekommt 429, sofern Max queued runs getriggerte Läufe nicht warten lässt.