在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
相关产品推荐
相关产品推荐

