Bencher Selbstgehostet
Bencher ist Open Source. Es ist verfügbar als SaaS, Bencher Cloud, und als selbst hostbares Set von Container-Images:
- Bencher Console Server
- Bencher API Server
Bereitstellung
Der einfachste Weg, Bencher Self-Hosted bereitzustellen, ist die Verwendung eines Triptychons von bencher CLI-Unterbefehlen:
bencher upbencher upErstellen und starten Sie die Bencher Self-Hosted-Container. Dies ist ähnlich wie das Ausführen von
docker compose up.bencher up [OPTIONS] [SERVICE]Service
Wählen Sie die Container aus, die ausgeführt werden sollen. Die möglichen Optionen sind:
all,apiundconsole. Standardmäßig istallausgewählt. Ähnlich demSERVICE-Argument fürdocker compose up.Optionen
--detachIm getrennten Modus ausführen. Die Container werden im Hintergrund ausgeführt. Ähnlich wie das
--detachFlag fürdocker compose up.--pull <WHEN>Zieht Images, bevor sie ausgeführt werden. Die möglichen Optionen sind:
always,missingundnever. Standardmäßig istalwaysausgewählt. Ähnlich zur--pullOption fürdocker compose up.--tag <TAG>Geben Sie das Image-Tag für die Container an. Standardmäßig entspricht das Image-Tag der
bencherCLI-Version. Die neuestebencherCLI-Version istv0.5.6.--console-port <PORT>Geben Sie eine Portnummer für den Console-Servercontainer an. Standardmäßig wird Port
3000verwendet. Ähnlich wie das Port-Only-Format der Option--exposefürdocker run.--api-port <PORT>Geben Sie eine Portnummer für den API-Server-Container an. Standardmäßig wird der Port
61016verwendet. Ähnlich zur Port-only-Form der--expose-Option fürdocker run.--console-env <KEY_VALUE>Übergebe eine Umgebungsvariable an den Console-Server-Container. Das erwartete Format ist
KEY=Wert. Dies kann nützlich sein, wenn man mit der Console Server-Konfiguration arbeitet. Ähnlich wie die Option--envfürdocker run.--api-env <KEY_VALUE>Eine Umgebungsvariable an den API-Server-Container übergeben. Das erwartete Format ist
SCHLÜSSEL=Wert. Dies kann nützlich sein, wenn Sie mit der API-Server-Konfiguration arbeiten. Ähnlich wie die die--env-Option fürdocker run.--console-volume <HOST_CONTAINER>Übergeben Sie ein Mount-Volume an den Console-Server-Container. Das erwartete Format ist
/host/path:/container/path. Dies kann nützlich sein, wenn Sie mit der Console Server-Konfiguration arbeiten. Ähnlich zur Option--volumefürdocker run.--api-volume <HOST_CONTAINER>Ein Volume-Mount an den API-Server-Container übergeben. Das erwartete Format ist
/host/path:/container/path. Dies kann nützlich sein, wenn Sie mit der API-Server-Konfiguration arbeiten. Ähnlich wie die Option--volumebeidocker run.--helpHilfe drucken.
bencher logsbencher logsZeigen Sie die Ausgabe von den Bencher Self-Hosted Containern an, wenn
bencher upmit dem--detach-Flag ausgeführt wurde. Dies ist ähnlich dem Ausführen vondocker compose logs.bencher up [OPTIONS] [SERVICE]Dienst
Wählen Sie die zu startenden Container aus. Die möglichen Optionen sind:
all,apiundconsole. Standardmäßig istallausgewählt. Ähnlich demSERVICE-Argument fürdocker compose logs.Optionen
--helpHilfe drucken.
bencher downbencher downStoppen und entfernen der Bencher Self-Hosted Container, wenn
bencher upmit dem--detach-Flag ausgeführt wurde. Dies ist ähnlich wie das Ausführen vondocker compose down.bencher down [OPTIONS] [SERVICE]Service
Wählen Sie die Container, die ausgeführt werden sollen. Die möglichen Optionen sind:
all,apiundconsole. Standardmäßig istallausgewählt. Ähnlich demSERVICEArgument fürdocker compose down.Optionen
--helpHilfe drucken.
Siehe die Bencher Compose Referenz für mehr Details.
Alternativ könnten Sie einfach docker compose verwenden, um die Container zu orchestrieren.
docker-compose.yml
services: bencher_api_compose: image: ghcr.io/bencherdev/bencher-api:latest container_name: bencher_api ports: - 61016:61016 volumes: # Mount the configuration directory - "./services/api/etc:/etc/bencher" # Mount the database directory - "./services/api/data:/var/lib/bencher/data" # environment: # Set configuration string or file path # - BENCHER_CONFIG= # - BENCHER_CONFIG_PATH=
bencher_console_compose: image: ghcr.io/bencherdev/bencher-console:latest container_name: bencher_console ports: - 3000:3000 environment: # Set the API URL to the localhost IPv4 address - BENCHER_API_URL=http://127.0.0.1:61016 # This is needed for Docker-to-Docker communication when using a local `BENCHER_API_URL` # Do not set this when using a remote `BENCHER_API_URL`, such as https://bencher.example.com - INTERNAL_API_URL=http://host.docker.internal:61016 depends_on: - bencher_api_composeSiehe das Docker Compose Referenzbeispiel für mehr Details.
API-Server-URL
Wenn Sie Bencher Self-Hosted verwenden, müssen Sie die Option --host auf die URL Ihres Bencher API-Servers für die meisten bencher CLI-Unterbefehle einstellen.
Wenn Sie zum Beispiel den bencher run CLI-Unterbefehl mit einem Bencher API-Server unter https://api.bencher.example.com verwenden, könnten Sie so etwas schreiben:
bencher run \--host https://api.bencher.example.com \--project project-abc4567-wxyz123456789 \--branch main \--testbed ci-runner \--adapter json \bencher mockWenn Sie den Bencher Console-Server auf einem anderen Host als den Bencher API-Server betreiben, müssen Sie auch die Umgebungsvariable BENCHER_API_URL auf dem Bencher Console-Server auf die Remote-URL Ihres Bencher API-Servers einstellen.
Zum Beispiel, wenn Sie den bencher up CLI-Unterbefehl verwenden, um den Bencher Console-Server mit einem Bencher API-Server zu starten, der unter https://api.bencher.example.com läuft, dann müssen Sie die Option --console-env auf die Remote-URL wie folgt einstellen:
bencher up --console-env BENCHER_API_URL=https://api.bencher.example.com consoleHTTPS
Um HTTPS einzurichten, kann Bencher Self-Hosted hinter einem Proxy mit aktiviertem HTTPS verwendet werden oder ein Domainname mit einem gültigen SSL-Zertifikat genutzt werden.
Sicherungen
Der einfachste Weg, Ihren Bencher Self-Hosted API-Server zu sichern, ist die Verwendung des
bencher server backup CLI-Unterbefehls.
Der Benutzer muss ein Administrator auf dem Server sein, um diesen Unterbefehl zu verwenden.
bencher server backup
bencher server backup
Sichern Sie die Datenbank des API-Servers.
Optionen
--host <URL>
Die URL des selbstgehosteten Bencher API-Servers.
Zum Beispiel, https://api.bencher.example.com.
--token <TOKEN>
Entweder muss die Option --token oder die Umgebungsvariable BENCHER_API_TOKEN auf einen gültigen API-Token gesetzt werden.
Wenn beide angegeben sind, hat die Option --token Vorrang vor der Umgebungsvariable BENCHER_API_TOKEN.
--compress
Komprimieren Sie das Datenbank-Backup mit gzip.
Dieser Vorgang wird zuerst ausgeführt.
--data-store <DATA_STORE>
Speichern Sie das Datenbank-Backup in diesem Datenspeicher. Dieser Vorgang wird als zweites ausgeführt.
Unterstützte Datenspeicher:
aws_s3: Backup zu AWS S3
Verwenden Sie den Abschnitt „database.data_store“ der API-Server-Konfiguration, um den Datenspeicher für Ihren Bencher Self-Hosted API-Server einzurichten.
--remove
Entfernen Sie die lokale Kopie der Datenbanksicherung. Dieser Vorgang läuft als dritter.
Notfallwiederherstellung
Um Datenverlust zwischen den Backups zu verhindern, bietet Bencher eine integrierte Notfallwiederherstellungslösung. Diese Funktion erfordert eine aktive Bencher Plus Lizenz.
Unterstützte Replikationsschemata:
file: Replizieren zu einem lokalen Dateipfadsftp: Replizieren über SFTPs3: Replizieren zu einem S3-kompatiblen Blob-Speicherabs: Replizieren zu Azure Blob Storagegcs: Replizieren zu Google Cloud Storage
Verwenden Sie den Abschnitt plus.disaster_recovery der API-Serverkonfiguration, um die Notfallwiederherstellung für Ihren Bencher Self-Hosted API-Server einzurichten.