如何在Github Actions中发布(部署)Allure测试报告
在GitHub Actions中部署Allure交互式测试报告的最佳实践
方案1:通过GitHub Pages托管报告(最常用)
这是最稳定的方案,利用GitHub Pages的静态文件托管能力,把Allure生成的静态报告部署上去,支持历史版本留存。
步骤1:配置仓库的GitHub Pages
进入仓库的「Settings」→「Pages」,将「Source」设置为「GitHub Actions」,保存配置。步骤2:编写/修改GitHub Actions工作流
在仓库的.github/workflows/目录下创建或修改测试工作流文件(比如test-and-deploy-allure.yml),加入报告生成与部署步骤:name: 运行测试并部署Allure报告 on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 配置Java环境 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: 执行测试并生成Allure报告 run: ./gradlew test allureReport - name: 部署报告到GitHub Pages uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./build/reports/allure-report publish_branch: gh-pages # 专门用于托管Pages的分支 keep_files: true # 保留历史报告,支持版本回溯步骤3:访问报告
部署完成后,报告地址为https://<你的GitHub用户名>.github.io/<仓库名>/。如果需要区分不同运行的报告,可以修改部署逻辑,把每个报告放到以运行编号命名的目录中:
比如在部署前添加一步复制报告到目标目录:mkdir -p ./allure-reports/${{ github.run_number }} cp -r ./build/reports/allure-report/* ./allure-reports/${{ github.run_number }}/然后把
publish_dir设为./allure-reports,这样历史报告可以通过https://<用户名>.github.io/<仓库名>/<运行编号>/访问。
方案2:使用Allure官方Action简化流程
Allure官方提供了专门的GitHub Action,能自动处理报告生成、历史合并和PR内报告预览:
name: 运行测试并发布Allure报告 on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 配置Java环境 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: 执行测试生成Allure结果 run: ./gradlew test - name: 发布Allure报告 uses: allure-framework/allure-github-action@v2 with: allure_results: build/allure-results gh_pages: gh-pages allure_report: build/reports/allure-report allure_history: allure-history env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
这个Action会自动维护历史报告目录,部署后你可以在GitHub Pages查看完整的报告历史,同时在PR的评论区会自动附上本次运行的报告链接。
关键注意事项
- 确保仓库的GitHub Pages已启用,且
gh-pages分支(或你指定的部署分支)允许Actions写入。 - 私有仓库的GitHub Pages默认仅仓库成员可访问,若需公开访问,可在Pages设置中调整访问权限。
- 执行顺序必须是先运行
test生成测试结果文件,再运行allureReport生成静态报告,否则报告会为空。
内容的提问来源于stack exchange,提问作者Владислав Загородний
相关产品推荐
相关产品推荐

