跳到主要内容

通用 Runner

Apifox 通用 Runner 可以理解为是一个自动化程序,可以托管在独立服务器上。它能够执行 Apifox 内的自动化测试定时任务定时导入接口文档返回 Mock 响应结果等工作。

准备工作

  • Linux 服务器
  • 服务器已安装 Docker 环境,最低版本号需使用 20.10.0,推荐 20.10.13

快速上手

本章节将为你介绍如何在服务器上部署通用 Runner。

1. 部署通用 Runner

前往 Apifox 的“团队资源”页,点击“部署通用 Runner”按钮。

2. 获取部署 Runner 命令

点击部署通用 Runner 按钮后,将弹窗展示给当前团队的通用 Runner 的部署命令脚本。你需要复制该命令并在服务器上部署。

3. 在服务器上部署 Runner

将已复制的部署命令粘贴至服务器的终端上,然后将会自动开始安装 Runner。

提示

你可以通过环境变量来修改部署 Runner 的属性,使得能够更加匹配你的实际使用场景。阅读 Runner 运行环境 了解更多信息。

安装完成后,终端将会打印出相关信息。如果报错,可以根据报错详情进行故障排除。如果依然无法解决,请联系我们并进行反馈。

4. 在服务器上查看 Runner 状态

你可以通过 Docker 客户端查看容器的运行状态。

也可以在终端内使用 docker ps 命令,查看容器的运行情况。

5. 在 Apifox 中查看已部署的通用 Runner

确认服务器上的 Runner 容器部署完成并启用后,返回 Apifox。你可以在“团队资源” → “通用 Runner” 页查看到这个 Runner 已部署完成并连接上 Apifox。

如果已在服务器上成功部署通用 Runner,但是在 Apifox 客户端中并没有显示,请点击“通用 Runner”右侧的刷新按钮刷新页面后再次查看。

你可以在 Apifox 中对 Runner 进行改名、添加描述以及删除操作,让你的团队成员能够更好的使用这个 Runner;也可以停用/重启 Runner。已暂停的 Runner 将不会再执行指定的相关定时任务,也无法再新创建相关的任务并指定此 Runner 执行。

关于 Runner 的状态信息见下表说明:

状态说明
已启动 / StartedRunner 在服务器的容器中正常启用并与 Apifox 保持通信中,可以处理 Apifox 下发的相关任务。
已停用 / StoppedRunner 在 Apifox 中手动停用,但是在服务器的容器中正常运行并保持通信。此时不会处理 Apifox 下发的各类任务,新的任务也不可指定停用的 Runner 执行。可以在 Apifox 中手动启用来让此 Runner 重新恢复已启动状态。
已离线 / OfflineRunner 与 Apifox 通信中断,无法处理 Apifox 下发的任务。可能原因为 Runner 容器已在服务器中停止运行,服务器与 Apifox 服务端通信异常等。此时可以通过恢复 Runner 容器运行并确保与 Apifox 通信没有问题,来让此 Runner 重新恢复已启动状态。

你可以在一个团队中部署多个通用 Runner,团队成员在创建需要使用自托管 Runner 的任务时,就可以从多个 Runner 中选择一个来执行。

在 Runner 中保存文件

使用 Runner 执行接口请求、运行测试场景、定时任务等任务时,可能会需要一些本地文件提供数据来支持任务执行。例如:

  • 在自定义脚本中调用其它编程语言
  • 在前后置操作中有用到数据库连接
  • 发起请求时需要使用 SSL 证书等

此时可将需要使用的文件保存在 Docker 容器中的指定目录下。当 Runner 在执行相关任务时就会根据设定的任务需求在指定目录下读取文件内容,确保任务完成。

可以参考下表,将对应格式与内容的文件放到指定目录下进行使用:

使用内容指定目录路径 (或文件名)示例 Docker 命令
其它编程语言/app/external-programs/-v /Users/xxx/runner/packages/api-test/external-programs:/app/externalPrograms
数据库连接配置文件/app/database/database-connections.json-v /Users/xxx/runner/packages/api-test/database/database-connections.json:/app/database/database-connections.json
SSL 证书列表文件/app/ssl/ssl-client-cert-list.json-v /Users/xxx/runner/packages/api-test/ssl/ssl-client-cert-list.json:/app/ssl/ssl-client-cert-list.json

以下是数据库连接配置文件的内容示例:

{
"19731": {
"configs": {
"default": {
"username": "accountname",
"password": "123456",
"host": "192.168.0.0"
}
},
"id": 19731,
"name": "Database Name",
"type": "mysql",
"projectId": 1320441,
"description": "Dummy data.",
"createdAt": "2022-09-27T07:51:09.000Z",
"updatedAt": "2024-05-09T11:38:07.000Z",
"deletedAt": null
}
}

你可以参考此处查看从 Apifox 客户端中导出配置文件的方法。

SSL 证书列表文件的内容示例:

[
{
"name": "domain1",
"matches": ["https://test.domain1.com/*", "https://www.domain1/*"],
"key": {"src": "./client.domain1.key"},
"cert": {"src": "./client.domain1.crt"},
"passphrase": "changeme"
},
{
"name": "domain2",
"matches": ["https://domain2.com/*"],
"key": {"src": "./client.domain2.key"},
"cert": {"src": "./client.domain2.crt"},
"passphrase": "changeme"
}
]