集成:Jira, Xray, Azure DevOps, Slack 和 Telegram
Nexus Studio 可连接五项服务:Jira Cloud, Xray Cloud, Azure DevOps, Slack 和 Telegram。每项服务默认关闭,需由你手动开启,且均从你的计算机直接连接,绝不经过我们的服务器。本页介绍各项服务的功能、读取的配置键,以及绝不会执行的操作。
作者:Nexus Studio 团队,Verdict System LLC. 2026年10月9日。
各项集成的工作方式
- 默认关闭,由你开启。 每项服务都有独立开关:
JIRA_ENABLED,XRAY_ENABLED,AZURE_BOARDS_ENABLED,SLACK_ENABLED和TELEGRAM_ENABLED。所有开关均默认为false。 - 从你的计算机直接连接。 引擎从运行测试的计算机调用各项服务自身的 API。所有数据均不经过我们的服务器,我们也绝不会看到你的问题、告警或结果。
- 密钥保留在工作区中。 令牌和密钥以配置行的形式保存在你磁盘上工作区的
.env文件中。你可以在设置的集成部分编辑它们,所有令牌、密钥和 webhook 均以隐藏敏感内容的形式显示。 - 沙盒运行不参与问题管理。 沙盒运行用于尚在构建中的测试,不代表发现了问题:它绝不会创建问题、添加评论或关闭问题。
每个测试在持续失败期间只对应一个问题
Jira 和 Azure Boards 遵循相同的生命周期。问题归属于测试,而非某次运行,因此每晚都失败的测试只会对应一个带有历史记录的问题,而不是每晚创建一个新问题。
- 首次失败时创建一个问题。 运行以 BREACHED, BREACHED_FLAKY, CHAOS_BREACHED 或 TIMEOUT 结束时,会为该测试创建一个问题,并附上错误信息和失败截图。
- 再次失败时添加评论。 只要该问题尚未关闭,后续失败就会在该问题下添加评论,并附上新的截图。两个浏览器同时失败时,也会更新同一个问题。
- 全部直接通过后关闭问题。 当一次运行中所有浏览器上的测试都无需重试便通过时,系统会在问题下添加评论说明情况,并将其转为已完成状态。如果工作流中没有对应的转换或状态,则仅添加评论。
- 之后再次失败会创建新问题。 如果失败所对应的问题已被删除或移动,也会创建新问题。
附件: 默认仅附上截图。只有在设置中通过 NEXUS_ISSUE_ATTACH_TRACE=true 主动启用后,才会同时附上 Playwright 跟踪文件和运行日志,因为其中可能包含会话数据:Cookie、授权标头和输入过的密码。每个附件的大小上限为 10 MB。
FLAKY 绝不会创建问题:运行失败后重试通过并不算缺陷。BLOCKED, UNREACHABLE, CRASHED 或配置错误也不会创建问题,因为它们涉及的是环境,而不是你的应用程序 (判定结果的确定方式)。问题与测试的对应关系保存在工作区的 evidence/integrations/issue-map.json 中。
Jira Cloud
- 连接: 使用你的 Atlassian 账户邮箱和在 id.atlassian.com 创建的 API 令牌。在设置的集成部分粘贴你的 Jira 站点中的任意链接:Studio 会保留站点地址和项目键。站点地址
JIRA_BASE_URL必须使用 https。检查连接会验证这些配置,不会创建任何内容。 - 问题: 在
JIRA_PROJECT_KEY指定的项目中创建缺陷类型的问题,并遵循上述生命周期。测试无需重试便通过后,问题会执行JIRA_DONE_TRANSITION中指定名称的转换,默认值为 Done, 按名称匹配且不区分大小写。 - 避免重复: 如果过去 24 小时内已创建过摘要相同的缺陷,则不会再创建一个。
- 手动操作: 你可以选择通过 Evidence Locker 将失败信息发送到 Jira。
Xray Cloud
启用 XRAY_ENABLED=true 后,每次 nexus ci 运行都会将其 JUnit XML 作为测试执行导入 Xray Cloud, 使用 XRAY_PROJECT_KEY 指定的项目,若该值为空则使用 JIRA_PROJECT_KEY 指定的项目;如果设置了 XRAY_TEST_PLAN_KEY, 还会将其关联到指定的测试计划下。
- 连接: 使用 API 密钥对
XRAY_CLIENT_ID和XRAY_CLIENT_SECRET, 可在 Jira 中依次进入应用、Xray、全局设置、API 密钥来创建。 - 传出的内容: 仅传出本次运行的 JUnit 文件,不包含其他内容。绝不会导入之前运行留下的 JUnit 文件。
- 绝不会导致运行失败: 如果导入失败,运行日志会用一行说明原因,并将密钥隐去。
Azure DevOps: Boards, Test Plans 和 Pipelines
一个个人访问令牌 (PAT) 和一个项目,分别通过 AZURE_DEVOPS_ORG_URL (https://dev.azure.com/<org> 或 https://<org>.visualstudio.com) 和 AZURE_DEVOPS_PROJECT 配置。PAT 仅发送到 Azure DevOps 自有的主机,绝不会出现在日志行中。在设置的集成下, 连接 Azure DevOps会检查项目和工作项类型,不会创建任何内容。
- Azure Boards: 设置
AZURE_BOARDS_ENABLED=true后,测试失败会按照上述生命周期创建类型为AZURE_BOARDS_WORK_ITEM_TYPE的工作项,默认为 Bug. 测试完全通过时,工作项会转为AZURE_BOARDS_DONE_STATE中指定的状态,默认为 Resolved; 如果流程不允许该状态,则仅添加评论。PAT 需要工作项权限 (读取 & 写入). 也可以通过 Evidence Locker 手动将失败结果发送到 Azure Boards. - Azure Test Plans: CI/CD 页面生成的
azure-pipelines.yml使用PublishTestResults@2任务发布本次运行的 JUnit XML, 因此每次流水线运行都会显示在 Test Plans 的运行列表中。 - Azure Pipelines:
nexus ci-remote --provider=azure会将AZURE_PIPELINE_ID指定的流水线加入运行队列,等待其完成,然后将其 JUnit XML 取回本机。为此,PAT 需要构建权限 (读取 & 执行).
Slack
- 连接: 在
SLACK_WEBHOOK_URL中配置一个传入 Webhook URL. 设置中提供了发送测试消息按钮。 - 接收的内容: Block Kit 消息:运行摘要,以及在设置
NEXUS_SLACK_NOTIFY=true后,为每个失败测试、不稳定测试、混沌测试或视觉回归测试发送的一条消息。如果失败结果有关联的 Jira 事项,消息中会附上该事项的链接。 - 手动操作: Evidence Locker 可以将失败结果的文本摘要发布到 Slack. 不会向 Slack 发送任何文件。
Telegram
- 连接: 使用 @BotFather 创建一次专属机器人,并在
TELEGRAM_TOKEN中配置其令牌。在设置中, 扫码连接会关联你的聊天并填入TELEGRAM_CHAT_ID. 不使用共享机器人。 - 接收的内容: 失败提醒,设置
NEXUS_TELEGRAM_NOTIFY=true后每个测试发送一条,以及你选择从 Studio 分享的报告和文件。 - 启用前须知: Telegram 可以接收报告和 PDF 等文件,这些文件会发送到 Telegram 的服务器。如果你所在的环境受监管,请先咨询合规团队。
密钥
每个配置键在工作区的 .env 中各占一行。所有配置键都可以在设置中编辑。
| 服务 | 配置键 | 默认值 |
|---|---|---|
| Jira Cloud | JIRA_ENABLED, JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN, JIRA_PROJECT_KEY, JIRA_DONE_TRANSITION | 关闭;项目 QA; 转为 Done |
| Xray Cloud | XRAY_ENABLED, XRAY_CLIENT_ID, XRAY_CLIENT_SECRET, XRAY_PROJECT_KEY, XRAY_TEST_PLAN_KEY | 关闭;留空时使用 Jira 项目 |
| Azure DevOps | AZURE_BOARDS_ENABLED, AZURE_DEVOPS_ORG_URL, AZURE_DEVOPS_PROJECT, AZURE_DEVOPS_PAT, AZURE_BOARDS_WORK_ITEM_TYPE, AZURE_BOARDS_DONE_STATE, AZURE_PIPELINE_ID | 关闭;类型为缺陷;状态为已解决 |
| 问题附件 | NEXUS_ISSUE_ATTACH_TRACE | 关闭:仅截图 |
| Slack | SLACK_ENABLED, SLACK_WEBHOOK_URL, NEXUS_SLACK_NOTIFY | 关闭 |
| Telegram | TELEGRAM_ENABLED, TELEGRAM_TOKEN, TELEGRAM_CHAT_ID, NEXUS_TELEGRAM_NOTIFY | 关闭 |
在流水线中,除 AZURE_PIPELINE_ID 外,这些相同的键均为流水线的机密变量,未设置的键会使对应服务保持关闭(CI/CD 中的机密)。
问题
Nexus Studio 能看到我的 Jira 或 Azure DevOps 数据吗?
不能。引擎在你的机器上使用你的密钥与 Jira、Xray、Azure DevOps、Slack 和 Telegram 通信。所有数据都不会经过我们的服务器。
不稳定的测试会创建工单吗?
不会。FLAKY 不会创建任何工单。BREACHED_FLAKY 则会:失败本身并不稳定,重试也无法掩盖这一点。
一个测试本周失败了 30 次。这会产生多少个问题?
一个,首次失败后的每次失败都会附上一条评论和一张新截图,直到该测试在所有浏览器上均顺利通过。
我可以同时使用 Jira 和 Azure Boards 吗?
可以。两者会分别为每个测试维护各自的问题。