You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins集成Tosca时构建历史结果随时间异常变更问题咨询

根因说明
  • 构建状态延迟翻转:当前场景下测试结果解析基本是通过JUnit插件实现,该插件默认存在后台定期重扫工作空间的逻辑。如果当次构建时拿到的是未写入完成的不完整结果文件(比如Tosca进程还没写完结果就触发了拷贝),插件没识别到失败用例会先标记构建为成功,等后续后台重扫扫到工作空间里留存的失败记录,就会覆盖旧构建的状态,和观察到的间隔1天左右状态翻转的特征完全匹配。
  • 用例数累加统计:JUnit插件默认会汇总所有匹配路径规则的结果文件内的用例数据,不会按构建维度区分文件归属。给结果文件追加构建号后缀的操作,相当于把所有历史构建的结果文件都留在了工作空间内,自然会出现用例数逐次累加的错误统计结果。
可直接落地的解决方案
  • 第一步:修正结果文件留存逻辑
    不需要给结果文件加构建号做唯一命名,固定输出文件名即可,但是要在每次构建执行前清空工作空间内所有历史Tosca结果文件,避免跨构建数据干扰。在现有batch脚本最开头加清理命令:
    :: 构建启动前清空工作空间内所有历史结果文件
    if exist "%WORKSPACE%\Result*.xml" del /f /q "%WORKSPACE%\Result*.xml"
    
  • 第二步:补全Tosca执行与结果拷贝的可靠性逻辑
    当前脚本存在两个核心隐患:一是没有捕获ToscaCIClient的执行退出码,任务实际执行失败时Jenkins会误判步骤成功;二是执行完立刻拷贝结果文件,大概率会拿到未写入完成的残缺文件,导致当次解析不到失败用例。将原有执行、拷贝逻辑替换为以下内容:
    Set Prog="C:\Program Files (x86)\TRICENTIS\Tosca Testsuite\ToscaCommander\ToscaCI\Client\ToscaCIClient.exe"
    Set Par= -m distributed -c "C:\ToscaScripting\Test Events\%testEvent%.xml" -r "C:\ToscaScripting\Reports\Result.xml" -e "http://server:81/DistributionServerService/ManagerService.svc"
    :: 先清空远程执行节点上的旧结果文件,避免拿到上次执行的残留数据
    psexec64 \\tosca-01 -s -accepteula cmd /c "if exist C:\ToscaScripting\Reports\Result.xml del /f /q C:\ToscaScripting\Reports\Result.xml"
    :: 执行Tosca测试任务,留存进程退出码
    psexec64 \\server -s -accepteula %Prog% %Par%
    set TOSCA_EXIT_CODE=%errorlevel%
    :: 轮询等待结果文件写入完成,最长等待30秒
    :wait_result
    timeout /t 2 /nobreak >nul
    if not exist "\\tosca-01\ToscaScripting\Reports\Result.xml" goto wait_result
    :: 拷贝完整结果文件到Jenkins工作空间
    Copy "\\tosca-01\ToscaScripting\Reports\Result.xml" "%WORKSPACE%\Result.xml"
    :: 透传Tosca执行退出码,任务异常时直接标记构建失败
    exit /b %TOSCA_EXIT_CODE%
    
  • 第三步:调整JUnit插件配置避免误扫
    1. 进入Jenkins任务配置页,找到「发布JUnit测试结果」配置项
    2. 测试报告XML路径仅填写Result.xml,不要使用**/*.xml这类宽范围通配符,避免扫描到无关文件
    3. 取消勾选「扫描工作空间所有报告」「保留长测试输出」类触发全量扫描的选项
    4. 勾选「无测试报告时标记构建为失败」,避免空结果被误判为成功
  • 第四步:关闭后台状态重扫开关
    进入Jenkins系统管理-全局配置页,找到JUnit插件配置板块,关闭「定期重新扫描工作空间测试结果」开关,从根源上避免构建完成后被后台任务篡改状态。
验证标准
  • 连续执行3-5次包含部分失败用例的构建,确认构建执行完成后立刻显示正确的成功/失败状态,单构建统计的用例数和Tosca实际执行的用例数完全一致
  • 构建完成后放置2天以上观察,确认历史构建状态不会自动翻转

内容的提问来源于stack exchange,提问作者Nick van de Goorbergh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:06:22