Skip to main content

在 staging 环境每晚运行端到端 E2E 测试

安排 Devin 每晚在 staging 环境运行你的端到端测试套件,并为失败用例创建工单。
AuthorCognition
Category自动化
FeaturesAPI, 调度, Playbook
本指南介绍如何通过 v3 API 管理计划任务,适用于自动化和基础设施即代码工作流。您也可以直接在 Devin UI 中创建和管理计划任务,无需任何 API 配置。
1

为 API 访问设置服务账号

通过 API 创建的预定会话需要具备相应权限的服务用户。你只需一次性完成设置,然后在下面的所有调用中使用该用户的 API key。
  1. 访问 app.devin.ai > Settings > Service Users,然后点击 Create Service User
  2. 分配包含 ManageOrgSchedules 权限的角色
  3. 保存创建后显示的 API key——它只会显示一次,之后你将使用它作为你的 Bearer token
要获取你的 organization ID,请使用服务用户的 token 调用 List Organizations 端点:
curl "https://api.devin.ai/v3/enterprise/organizations" \
  -H "Authorization: Bearer $DEVIN_API_KEY"
导出这两个值,以便本指南中的命令可以按原样运行:
export DEVIN_API_KEY="sk-your-service-user-key"
export ORG_ID="your-org-id"
有关服务用户和权限的更多信息,请参阅API 身份验证文档
2

为本次测试运行编写运行手册

在创建计划之前,先编写一个playbook,明确告诉 Devin 如何运行你的 E2E 测试套件,以及如何处理结果。前往 Settings > Playbooks 并创建一个新的 playbook——或者使用 Advanced Devin,让它根据你的测试工作流描述为你生成一个。下面是一个适用于 Playwright 套件的示例:保存后记下该 playbook 的 ID——在进行 API 调用时会用到它。在查看该 playbook 时,你可以在 URL 中找到它(app.devin.ai/.../playbooks/{playbook_id})。
安装 Linear integration,这样 Devin 就可以在 playbook 中创建工单。在创建计划时,你还可以设置一个 Slack channel(例如 #qa-results),让你的团队自动收到通知。如果测试需要,可通过 organization secrets 为 Devin 提供对预发布环境机密(数据库 URL、API key)的只读访问权限。
3

通过 API 创建夜间计划任务

现在使用 POST /v3/organizations/{org_id}/schedules 端点来注册该调度计划。此示例会在每天的 UTC 时间凌晨 2 点运行:
curl -X POST "https://api.devin.ai/v3/organizations/$ORG_ID/schedules" \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Nightly E2E — staging",
    "prompt": "Run the nightly E2E test suite against staging. Follow the playbook exactly.",
    "schedule_type": "recurring",
    "frequency": "0 2 * * *",
    "playbook_id": "your-playbook-id"
  }'
响应中包含一个用于后续管理该计划的 schedule_id。请先将其保存:
export SCHEDULE_ID="a1b2c3d4-e5f6-7890-abcd-ef1234567890"  # 来自响应结果
frequency 字段使用标准 cron 语法。以下是一些常用示例:
PatternWhen it runs
0 2 * * *每天 UTC 时间凌晨 2 点
0 2 * * 1-5仅工作日(周一至周五)凌晨 2 点
0 6 * * 1每周一 UTC 时间早上 6 点
为什么是凌晨 2 点?你希望测试在当天最后一次部署在预发环境稳定之后再运行,但又要足够早,这样工程师开始工作时就能看到失败结果。请根据你团队的时区和部署节奏进行调整。完整字段列表请参见 Create schedule 端点文档
4

验证首次运行并优化提示词

在计划首次执行后,检查该会话,确保 Devin 正确运行了测试,且输出结果符合你的预期。
  1. 打开 Devin 仪表盘,在 Past Sessions 下找到该会话——它会带有计划名称标签
  2. Playwright 测试套件是否已执行?是否只为真实失败(而非不稳定测试)创建了 Linear 工单?
  3. #qa-results Slack 频道中查看汇总消息
首次运行时的常见问题及其解决方法:
  • Devin 无法访问预发布环境:将你的预发布环境变量(例如 STAGING_API_KEYDATABASE_URL)添加为组织密钥,以便它们在每个计划会话中都可用
  • 由不稳定测试产生了过多工单:在运行手册中添加重试逻辑:“在创建工单前,先对任何失败的测试重新运行一次。只有在连续失败两次时才创建工单。”
  • 测试耗时过长:收窄测试范围——例如:“只运行 tests/critical/tests/smoke/ 中的测试”——或增加会话超时时间
5

以代码方式管理调度

一旦你的每晚任务运行稳定下来,你就会希望像管理其他计划任务一样管理它:在部署冻结期间将其暂停,在测试套件发生变化时更新提示词,或者为不同环境再创建一个计划任务。在部署冻结或维护窗口期间暂停计划任务
curl -X PATCH "https://api.devin.ai/v3/organizations/$ORG_ID/schedules/$SCHEDULE_ID" \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'
在冻结结束后重新启用:
curl -X PATCH "https://api.devin.ai/v3/organizations/$ORG_ID/schedules/$SCHEDULE_ID" \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true}'
列出所有计划任务,以审查当前正在运行的任务:
curl "https://api.devin.ai/v3/organizations/$ORG_ID/schedules" \
  -H "Authorization: Bearer $DEVIN_API_KEY"
对于需要管理多个计划任务的团队,可以让 Devin 构建一个 CLI,将计划任务定义从 YAML 配置文件中同步到系统中——这样你就可以像管理测试配置一样,对这些计划任务进行版本控制: