如何实现Zephyr Squad测试执行状态变更时触发Jenkins任务?
针对Zephyr Squad测试执行状态变更触发Jenkins API的解决方案
1. 监听Zephyr专属事件
Zephyr Squad 9.x版本提供了测试执行状态变更的专属事件类,你可以通过编写自定义Jira插件来监听:
- 核心事件类:
com.thed.zephyr.api.event.testexecution.TestExecutionStatusUpdatedEvent - 实现步骤:
- 创建Jira插件项目,引入Zephyr Squad的依赖包
- 编写监听器类,使用
@EventListener注解(或实现Jira的EventListener接口)监听上述事件 - 在事件处理方法中,调用Jenkins的API接口完成请求发送
2. 拦截Zephyr API请求
既然状态变更仅调用Zephyr自身的/rest/zephyr/接口,可通过自定义Filter拦截对应请求:
- 实现
javax.servlet.Filter接口,拦截测试执行状态更新的API路径(比如/rest/zephyr/latest/testexecution/*/status) - 在Filter的
doFilter方法中,校验请求参数确认是状态变更操作后,异步调用Jenkins API,避免影响Zephyr接口的响应速度 - 注意要兼容Zephyr的权限验证逻辑,确保只处理合法的操作请求
3. 检查Zephyr自带Webhook支持
先确认Zephyr Squad 9.1.3是否内置了测试执行事件的Webhook功能:
- 进入Zephyr插件的设置页面,查找是否有“测试执行状态变更”相关的Webhook配置项
- 如果有,直接配置Jenkins的API地址即可,无需编写代码,这是最简便的方案
最后备选:Jira Issue状态联动
如果以上方法都无法实现,再考虑联动Jira Issue状态:
- 编写自定义逻辑(或利用Zephyr自动化规则),当Test Execution Status变更时,同步更新对应的Jira Issue状态
- 借助Jira原生的IssueUpdate事件,通过Webhook触发Jenkins API请求
内容的提问来源于stack exchange,提问作者Nick OGS
相关产品推荐
相关产品推荐

