温馨提示×

Jenkins在Debian上的测试报告生成

小樊
37
2025-12-28 16:28:13
栏目: 智能运维

在 Debian 上,Jenkins 生成测试报告可按环境准备、插件安装、任务配置、报告查看与安全加固四个环节落地。下面给出可直接执行的步骤与示例。


一 环境准备与插件安装

  • 安装 Java 11+(Jenkins 运行依赖):sudo apt update && sudo apt install -y openjdk-11-jdk;验证:java -version。
  • 添加 Jenkins 官方 APT 源 并安装:
    wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
    echo “deb http://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list
    sudo apt update && sudo apt install -y jenkins
  • 启动并设置开机自启:sudo systemctl enable --now jenkins;默认监听 8080 端口。
  • 首次访问 http://<服务器IP>:8080,解锁管理员:初始密码位于 /var/lib/jenkins/secrets/initialAdminPassword
  • 常用报告相关插件:JUnit Plugin、HTML Publisher Plugin、Allure Plugin、Performance Plugin

二 报告类型与生成方式

  • JUnit 测试报告(Java/Maven/Gradle 或 Python 等产出 JUnit XML)
    • 构建产出:Maven 生成 target/surefire-reports/*.xml;Gradle 生成 build/test-results/;Python 可用 pytest 生成 –junitxml=reports/pytest.xml
    • Jenkins 发布:Freestyle 在“构建后操作”选择 Publish JUnit test result report;Pipeline 使用 junit ‘路径/模式’。
  • HTML 报告(覆盖率、静态扫描、手工汇总页等)
    • 构建产出:工具生成 HTML 目录(如覆盖率、Sonar 页面、测试汇总页)。
    • Jenkins 发布:Freestyle 选择 Publish HTML reports;配置 HTML directory to archive 与 Index page[s](如 index.html)。
  • Allure 报告(pytest、Java 等生态)
    • 安装 Allure CLI(Debian 可用包管理器或手动安装),验证:allure --version。
    • 测试执行产出:写入 allure-results/(JSON 结果);pytest 示例:pytest --alluredir=allure-results。
    • Jenkins 发布:安装 Allure Plugin,在“全局工具配置”添加 Allure Commandline;Pipeline 使用 allure results: [[path: ‘allure-results’]]。
  • JMeter 性能测试报告
    • 执行与产出:jmeter -n -t test.jmx -l result.jtl;JMeter 5.1+ 可直接生成 HTML 报告(-e -o reports/html)。
    • Jenkins 发布:使用 Performance Plugin 发布 result.jtl,查看响应时间、吞吐量、错误率与趋势。

三 示例 Pipeline 片段

  • JUnit(Maven)
    stage('Test') { steps { sh 'mvn test' } }
    post { always { junit 'target/surefire-reports/*.xml' } }
    
  • Allure(pytest)
    stage('Install deps') { steps { sh 'pip install -r requirements.txt allure-pytest' } }
    stage('Test') { steps { sh 'pytest --alluredir=allure-results' } }
    stage('Report') {
      steps { allure([ includeProperties: false, jdk: '', reportBuildPolicy: 'ALWAYS',
                     results: [[path: 'allure-results']] ]) }
    }
    
  • JMeter(命令行)
    stage('Performance') { steps { sh 'jmeter -n -t test.jmx -l result.jtl' } }
    post { always { perfReport 'result.jtl' } }
    
  • Python + pytest(JUnit XML)
    stage('Test') {
      steps {
        sh 'pip install -r requirements.txt'
        sh 'python -m pytest tests/ --junitxml=reports/pytest.xml'
      }
    }
    post { always { junit 'reports/pytest.xml' } }
    
  • PHP + PHPUnit(JUnit XML)
    stage('Test') {
      steps {
        sh 'composer install --no-interaction --prefer-dist'
        sh 'vendor/bin/phpunit --log-junit reports/phpunit.xml'
      }
    }
    post { always { junit 'reports/phpunit.xml' } }
    

四 查看报告与安全加固

  • 查看入口
    • JUnit:构建详情页的 Test Result 与趋势图。
    • HTML:项目左侧 HTML Report 菜单(若未显示,检查发布路径与索引页)。
    • Allure:项目左侧 Allure Report 菜单。
    • JMeter Performance:项目左侧 Performance Report 与趋势图。
  • HTML 报告样式与安全策略
    • 若出现样式丢失或内容被拦截,可在 Manage Jenkins → Script Console 临时放宽策略(仅测试环境):
      System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “”)
    • 生产环境建议:启用 Content Security Policy 合规配置,或通过反向代理对静态资源做白名单放行,避免关闭安全策略。

0