Bencher 自托管
Bencher 是 开源的。 它有 SaaS 版本,Bencher Cloud, 也可以作为一组可自托管的容器镜像使用:
部署
部署 Bencher 自托管的最简单方法是使用 bencher CLI 子命令的三联屏:
bencher upbencher up创建并启动 Bencher 自托管容器。 这类似于运行
docker compose up。bencher up [OPTIONS] [SERVICE]服务
选择要运行的容器。可能的选项有:
all、api和console。默认选择all。类似于docker compose up的SERVICE参数。选项
--detach以分离模式运行。 容器将在后台运行。 类似于
docker compose up的--detach标志。--pull <WHEN>在运行之前拉取镜像。 可能的选项有:
always、missing和never。 默认情况下选择always。 类似于docker compose up的--pull选项。--tag <TAG>指定容器的镜像标签。 默认情况下,镜像标签与
bencherCLI 版本匹配。 最新的bencherCLI 版本是v0.5.6。--console-port <PORT>为控制台服务器容器指定一个端口号。 默认情况下,使用端口
3000。 类似于docker run的--expose选项的仅端口形式。--api-port <PORT>为 API 服务器容器指定一个端口号。 默认情况下,使用端口
61016。 类似于docker run的--expose选项 的仅端口形式。--console-env <KEY_VALUE>将环境变量传递给控制台服务器容器。预期格式为
KEY=value。这在使用控制台服务器配置时很有用。类似于docker run的--env选项。--api-env <KEY_VALUE>将环境变量传递给 API 服务器容器。 预期格式为
KEY=value。 这在使用 API 服务器配置 时很有用。 类似于docker run的--env选项。--console-volume <HOST_CONTAINER>将挂载卷传递给控制台服务器容器。 预期格式为
/host/path:/container/path。 这在使用控制台服务器配置时可能很有用。 类似于docker run的--volume选项。--api-volume <HOST_CONTAINER>将挂载卷传递给 API 服务器容器。 预期格式为
/host/path:/container/path。 这在使用 API 服务器配置 时很有用。 类似于docker run的--volume选项。--help打印帮助。
bencher logsbencher logs查看 Bencher 自托管容器的输出, 如果
bencher up是与--detach选项一起运行的。 这类似于运行docker compose logs。bencher up [OPTIONS] [SERVICE]服务
选择要运行的容器。 可能的选择有:
all、api和console。 默认选择是all。 类似于docker compose logs的SERVICE参数。选项
--help打印帮助。
bencher downbencher down停止并移除 Bencher 自托管的容器, 如果
bencher up时使用了--detach标志。 这类似于运行docker compose down。bencher down [OPTIONS] [SERVICE]服务
选择要运行的容器。 可以选择的项有:
all、api和console。 默认选择all。 类似于docker compose down的SERVICE参数。选项
--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 参考示例。
API 服务器网址
在使用 Bencher 自托管版本时,您需要为大多数 bencher CLI 子命令将 --host 选项 设置为您的 Bencher API 服务器的网址。
例如,如果您使用 bencher run CLI 子命令并且 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 控制台服务器和 Bencher API 服务器,您还需要在 Bencher 控制台服务器上设置 BENCHER_API_URL 环境变量 指向 Bencher API 服务器的远程网址。
例如,如果您使用 bencher up CLI 子命令启动 Bencher 控制台服务器,而 Bencher API 服务器运行在 https://api.bencher.example.com 上,那么您需要将 --console-env 选项 设置为远程网址,如下所示:
bencher up --console-env BENCHER_API_URL=https://api.bencher.example.com consoleHTTPS
为了设置 HTTPS,可以使用启用 HTTPS 的代理来托管 Bencher 自托管,或者使用具有有效 SSL 证书的域名。
备份
备份您的 Bencher 自托管 API 服务器的最简单方法是使用
bencher server backup CLI 子命令。
用户必须是服务器上的管理员才能使用此子命令。
bencher server backup
bencher server backup
备份API服务器数据库。
选项
--host <URL>
Bencher 自托管 API 服务器的 URL。
例如,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
使用 API 服务器配置的database.data_store部分来设置您的 Bencher 自托管 API 服务器的数据存储。
--remove
删除数据库备份的本地副本。 此操作位于第三步运行。
灾难恢复
为了防止备份之间的数据丢失,Bencher 提供了内置的灾难恢复解决方案。此功能需要有效的 Bencher Plus 许可证。
支持的复制方案:
file:复制到本地文件路径sftp:通过 SFTP 复制s3:复制到任何兼容 S3 的对象存储abs:复制到 Azure Blob 存储gcs:复制到谷歌云存储
使用 API 服务器配置中的 plus.disaster_recovery 部分 为您的 Bencher 自托管 API 服务器设置灾难恢复。