Bencher Self-Hosted
Bencher — это проект с открытым исходным кодом. Он доступен как SaaS, Bencher Cloud, а также как набор контейнерных образов для самостоятельного размещения:
- Сервер консоли Bencher
- API-сервер Bencher
Развертывание
Самый простой способ развернуть Bencher Self-Hosted - это использовать триптих подкоманд CLI bencher:
bencher upbencher upСоздание и запуск контейнеров Bencher с самостоятелной хостингом. Это похоже на выполнение команды
docker compose up.bencher up [OPTIONS] [SERVICE]Сервис
Выберите контейнеры для запуска. Возможные варианты:
all,apiиconsole. По умолчанию выбираетсяall. Аналогично аргументуSERVICEдляdocker compose up.Опции
--detachЗапуск в отсоединённом режиме. Контейнеры будут запущены в фоновом режиме. Похоже на флаг
--detachдляdocker compose up.--pull <WHEN>Загрузка образов перед запуском. Возможные варианты:
always,missingиnever. По умолчанию выбран вариантalways. Аналогично опции--pullдляdocker compose up.--tag <TAG>Укажите тег образа для контейнеров. По умолчанию тег образа соответствует версии CLI
bencher. Самая последняя версия CLIbencher— этоv0.5.6.--console-port <PORT>Укажите номер порта для контейнера Console сервера. По умолчанию используется порт
3000. Аналогично форме только с портом для опции--exposeдляdocker run.--api-port <PORT>Укажите номер порта для контейнера API-сервера. По умолчанию используется порт
61016. Аналогично форме только с портом для параметра--exposeвdocker run.--console-env <KEY_VALUE>Передайте переменную окружения в контейнер сервера Console. Ожидаемый формат —
KEY=value. Это может быть полезно при работе с конфигурацией сервера Console. Аналогично опции--envдляdocker run.--api-env <KEY_VALUE>Передайте переменную окружения в контейнер сервера API. Ожидаемый формат -
KEY=value. Это может быть полезно при работе с конфигурацией API сервера. Аналогично опции--envдляdocker run.--console-volume <HOST_CONTAINER>Передайте том монтирования в контейнер сервера Console. Ожидаемый формат -
/host/path:/container/path. Это может быть полезно при работе с конфигурацией сервера Console. Аналогично опции--volumeдляdocker run.--api-volume <HOST_CONTAINER>Передайте том для монтирования в контейнер сервера API. Ожидаемый формат:
/host/path:/container/path. Это может быть полезно при работе с конфигурацией сервера API. Аналогично опции--volumeдляdocker run.--helpВыводит справку.
bencher logsbencher logsПросмотр вывода из контейнеров Bencher в автономном режиме, если
bencher upбыл выполнен с флагом--detach. Это похоже на выполнение командыdocker compose logs.bencher up [OPTIONS] [SERVICE]Сервис
Выберите контейнеры для запуска. Возможные варианты:
all,apiиconsole. По умолчанию выбраноall. Похоже на аргументSERVICEдляdocker compose logs.Опции
--helpВыводит справку.
bencher downbencher downОстановите и удалите контейнеры Bencher Self-Hosted, если
bencher upбыл выполнен с флагом--detach. Это похоже на выполнение командыdocker compose down.bencher down [OPTIONS] [SERVICE]Сервис
Выберите контейнеры для запуска. Возможные варианты:
all,apiиconsole. По умолчанию выбранall. Аналогично аргументуSERVICEдляdocker compose down.Опции
--helpВыводит справку.
См. справочник Bencher Compose для получения дополнительной информации.
В качестве альтернативы, вы можете просто использовать docker compose для организации контейнеров.
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_composeСм. пример в справочнике Docker Compose для получения дополнительной информации.
URL API сервера
При использовании Bencher Self-Hosted,
вам нужно будет установить параметр --host
на URL вашего Bencher API сервера
для большинства подкоманд CLI bencher.
Например, если вы используете подкоманду CLI bencher run
с Bencher API сервером по адресу https://api.bencher.example.com,
то вы можете написать что-то вроде этого:
bencher run \--host https://api.bencher.example.com \--project project-abc4567-wxyz123456789 \--branch main \--testbed ci-runner \--adapter json \bencher mockЕсли вы запускаете сервер Bencher Console на другом хосте, чем Bencher API сервер,
вам также нужно будет установить переменную окружения BENCHER_API_URL
на сервере Bencher Console на удаленный URL для вашего Bencher API сервера.
Например, если вы используете подкоманду CLI bencher up
для запуска сервера Bencher Console с Bencher API сервером по адресу https://api.bencher.example.com,
тогда вам нужно будет установить параметр --console-env на удаленный URL следующим образом:
bencher up --console-env BENCHER_API_URL=https://api.bencher.example.com consoleHTTPS
Для настройки HTTPS можно использовать Bencher Self-Hosted за прокси с включенным HTTPS или использовать доменное имя с действительным SSL-сертификатом.
Резервные копии
Самый простой способ создать резервную копию вашего локального API-сервера Bencher - использовать
подкоманду CLI bencher server backup.
Пользователь должен быть администратором на сервере, чтобы использовать эту подкоманду.
bencher server backup
bencher server backup
Резервное копирование базы данных сервера API.
Опции
--host <URL>
URL API-сервера Bencher Self-Hosted.
Например, https://api.bencher.example.com.
--token <TOKEN>
Либо параметр --token, либо переменная окружения BENCHER_API_TOKEN должны быть установлены на действительный API токен. Если оба параметра указаны, опция --token имеет приоритет над переменной окружения BENCHER_API_TOKEN.
--compress
Сожмите резервную копию базы данных с помощью gzip.
Эта операция выполняется первой.
--data-store <DATA_STORE>
Сохраните резервную копию базы данных в этом хранилище данных. Эта операция выполняется второй.
Поддерживаемые хранилища данных:
aws_s3: Резервное копирование в AWS S3
Используйте раздел database.data_store конфигурации серверного API,
чтобы настроить хранилище данных для вашего самоустановочного API-сервера Bencher.
--remove
Удалить локальную копию резервной копии базы данных. Эта операция выполняется третьей.
Восстановление после сбоя
Чтобы предотвратить потерю данных между резервными копиями, Bencher предлагает встроенное решение для восстановления после сбоя. Эта функция требует активной лицензии Bencher Plus.
Поддерживаемые схемы репликации:
file: Репликация в локальный путь к файлуsftp: Репликация через SFTPs3: Репликация в любое совместимое с S3 хранилище блобовabs: Репликация в Azure Blob Storagegcs: Репликация в Google Cloud Storage
Используйте раздел plus.disaster_recovery конфигурации API-сервера, чтобы настроить восстановление после сбоя для вашего самостоятельно хостируемого API-сервера Bencher.