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

在GitHub Actions中为两个测试套件生成独立Allure报告的问题

解决GitHub Actions中Allure报告覆盖问题,实现多套件独立报告部署

核心问题分析

你尝试合并不同套件的结果生成统一报告,但因为两个工作流独立执行,每次部署时都会覆盖gh-pages分支上的相同目录,导致旧报告丢失。GitHub Pages完全支持多路径静态资源,我们可以通过给每个测试套件分配独立的部署目录解决问题,同时实现不同URL访问各自的报告。


方案一:为每个套件生成独立报告(推荐)

给两个测试套件的工作流分别配置独立的报告生成和部署路径,让它们部署到gh-pages分支的不同子目录下,互不覆盖且拥有独立访问URL。

套件1(Workflow_1)完整工作流代码

jobs:
  Run_tests:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      - name: 运行测试套件1
        run: |
          robot --outputdir results --listener allure_robotframework:results/allure/suite1 test_suite_folder_1
  Generate_report:
    needs: Run_tests
    runs-on: ubuntu-latest
    name: 生成套件1的Allure报告
    steps:
      - name: 获取套件1的报告历史
        uses: actions/checkout@v4
        if: always()
        continue-on-error: true
        with:
          ref: gh-pages
          path: gh-pages
      
      - name: 生成带历史的Allure报告(套件1)
        uses: simple-elf/allure-report-action@master
        if: always()
        id: allure-report
        with:
          allure_results: results/allure/suite1
          gh_pages: gh-pages/suite1-report
          allure_report: allure-report-suite1
          allure_history: allure-history-suite1
          keep_reports: 20
   
      - name: 部署套件1报告到GitHub Pages
        if: always()
        uses: peaceiris/actions-gh-pages@v2
        with:
          personal_token: ${{ secrets.GITHUB_TOKEN }}
          publish_branch: gh-pages
          publish_dir: allure-history-suite1
          destination_dir: suite1-report  # 指定部署到gh-pages的suite1-report子目录

套件2(Workflow_2)完整工作流代码

只需将上述代码中的suite1、test_suite_folder_1替换为suite2、test_suite_folder_2即可:

jobs:
  Run_tests:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      - name: 运行测试套件2
        run: |
          robot --outputdir results --listener allure_robotframework:results/allure/suite2 test_suite_folder_2
  Generate_report:
    needs: Run_tests
    runs-on: ubuntu-latest
    name: 生成套件2的Allure报告
    steps:
      - name: 获取套件2的报告历史
        uses: actions/checkout@v4
        if: always()
        continue-on-error: true
        with:
          ref: gh-pages
          path: gh-pages
      
      - name: 生成带历史的Allure报告(套件2)
        uses: simple-elf/allure-report-action@master
        if: always()
        id: allure-report
        with:
          allure_results: results/allure/suite2
          gh_pages: gh-pages/suite2-report
          allure_report: allure-report-suite2
          allure_history: allure-history-suite2
          keep_reports: 20
   
      - name: 部署套件2报告到GitHub Pages
        if: always()
        uses: peaceiris/actions-gh-pages@v2
        with:
          personal_token: ${{ secrets.GITHUB_TOKEN }}
          publish_branch: gh-pages
          publish_dir: allure-history-suite2
          destination_dir: suite2-report  # 指定部署到gh-pages的suite2-report子目录

访问方式

部署完成后,两个套件的报告URL分别为:

  • 套件1:https://<你的用户名>.github.io/<仓库名>/suite1-report
  • 套件2:https://<你的用户名>.github.io/<仓库名>/suite2-report

方案二:生成包含所有套件的统一报告(可选)

如果需要在一个报告中查看所有套件的测试结果,需确保每次生成报告时包含所有套件的历史结果。可以通过在同一个工作流中依次运行两个测试套件,合并结果后生成统一报告:

示例工作流代码

jobs:
  Run_all_tests:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      - name: 运行测试套件1
        run: |
          robot --outputdir results --listener allure_robotframework:results/allure/suite1 test_suite_folder_1
      - name: 运行测试套件2
        run: |
          robot --outputdir results --listener allure_robotframework:results/allure/suite2 test_suite_folder_2
  Generate_unified_report:
    needs: Run_all_tests
    runs-on: ubuntu-latest
    name: 生成统一Allure报告
    steps:
      - name: 获取报告历史
        uses: actions/checkout@v4
        if: always()
        continue-on-error: true
        with:
          ref: gh-pages
          path: gh-pages
      
      - name: 生成带历史的统一报告
        uses: simple-elf/allure-report-action@master
        if: always()
        id: allure-report
        with:
          allure_results: results/allure/*
          gh_pages: gh-pages
          allure_report: allure-report
          allure_history: allure-history
          keep_reports: 20
   
      - name: 部署统一报告到GitHub Pages
        if: always()
        uses: peaceiris/actions-gh-pages@v2
        with:
          personal_token: ${{ secrets.GITHUB_TOKEN }}
          publish_branch: gh-pages
          publish_dir: allure-history

这种方式的缺点是每次需要同时运行两个套件,无法单独触发某个套件的报告生成。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:57:08