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

GitHub并行执行测试仅生成最后一个测试文件的Allure报告问题

解决GitHub Actions并行测试仅生成最后一个Allure报告的问题

问题原因

你当前的工作流存在两个核心问题:

  • 每个矩阵Job是独立的运行环境,各自生成的allure-report在上传Artifact时使用了相同名称report-${{ github.run_number }},后执行的Job会直接覆盖之前的报告文件。
  • 每个Job仅针对单个测试文件生成报告,没有合并所有测试用例的结果数据。

修复方案

我们需要拆分流程:让每个测试Job单独生成并上传测试结果文件(不是最终报告),再新增一个Job收集所有结果文件,合并生成完整的Allure报告。

修改后的完整工作流

on:
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    env:
        STAGE_USER_NAME: ${{ secrets.STAGE_USER__EMAIL}}
        STAGE_USER_PASSWORD: ${{ secrets.STAGE_USER_PASSWORD}}

    strategy:
      matrix:
        node-version: [18.14.0]
        test-file:
                  - bprod.test.js
                  - login.test.js
                  - Facebook.test.js
 
    steps:
    - uses: actions/checkout@v3
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v3
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: npm install
    - name: Run tests and generate Allure results
      run: npx jest ${{ matrix.test-file }} --reporters default jest-allure --detectOpenHandles --forceExit --testTimeout=300000 --allure-results=allure-results-${{ matrix.test-file }}
      continue-on-error: true
   
    - name: Upload Allure results
      if: always()
      uses: actions/upload-artifact@v3
      with: 
          name: allure-results-${{ matrix.test-file }}
          path: allure-results-${{ matrix.test-file }}

  merge-report:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js 18.14.0
        uses: actions/setup-node@v3
        with:
          node-version: 18.14.0
          cache: 'npm'
      - run: npm install
      - name: Download all Allure results
        uses: actions/download-artifact@v3
        with:
          path: allure-results-collection
      - name: Merge results into single directory
        run: |
          mkdir -p allure-results
          cp -r allure-results-collection/**/* allure-results/
      - name: Generate full Allure report
        run: npm run alluregenerate
      - name: Upload final Allure report
        uses: actions/upload-artifact@v3
        with:
          name: full-allure-report-${{ github.run_number }}
          path: allure-report

关键修改说明

  1. 独立结果目录:测试命令中添加--allure-results=allure-results-${{ matrix.test-file }},让每个测试文件的结果存到专属目录,避免冲突。
  2. 上传结果而非报告:每个测试Job上传自己的结果目录,Artifact名称用测试文件名区分,确保不会被覆盖。
  3. 新增合并报告Job:
    • 依赖build Job,确保所有测试完成后再执行。
    • 下载所有测试结果到统一目录,合并到allure-results。
    • 基于合并后的结果生成完整报告,上传最终的合并报告Artifact。

内容的提问来源于stack exchange,提问作者Shadow Walker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:00:23