温馨提示×

Jenkins如何在Ubuntu上实现自动化测试

小樊
32
2025-12-08 13:00:48
栏目: 智能运维

在 Ubuntu 上使用 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 [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /devref
    sudo apt update && sudo apt install -y jenkins
  • 启动与开机自启:sudo systemctl start jenkins && sudo systemctl enable jenkins
  • 访问与初始化:浏览器打开 http://<服务器IP>:8080,解锁管理员(初始密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword),按向导安装推荐插件并创建管理员。
  • 防火墙放行端口(如使用 UFW):sudo ufw allow 8080;如需修改端口,编辑 /usr/lib/systemd/system/jenkins.service 中的 Environment=“JENKINS_PORT=8080”,改为如 8088,然后执行 sudo systemctl daemon-reload && sudo systemctl restart jenkins。

二 创建任务与流水线

  • 新建任务:选择 Pipeline(推荐)或 Freestyle project
  • 源码管理:配置 Git 仓库 URL 与凭据。
  • 构建触发器:按需勾选 轮询 SCM(如 H/5 * * * * 每5分钟)或配置 GitLab/GitHub Webhook 实现代码推送即触发。
  • 构建步骤:
    • Freestyle:添加 “Execute shell”,写入测试命令(如 mvn test、pytest)。
    • Pipeline:在 Jenkinsfile 中定义 stages/steps(见下文示例)。
  • 构建后操作:
    • 单元测试报告:添加 Publish JUnit test result report,指定 XML 结果路径(如 target/surefire-reports/*.xmltest-results.xml)。
    • 可视化报告:安装 Allure 插件,在 post 阶段使用 allure 命令收集结果(如 target/allure-results)。

三 典型测试场景与命令示例

  • Python + pytest(含覆盖率与报告)
    • 安装依赖:pip install pytest pytest-cov
    • 运行测试:pytest tests/ --junit-xml=test-results.xml --cov=your_pkg --cov-report=xml:coverage.xml
    • Jenkins 配置:构建步骤执行上述命令;构建后添加 “Publish JUnit test result report”(test-results.xml)与 Allure 报告(coverage.xml 与 allure-results 按需)。
  • Java + Maven + JUnit
    • 运行测试:mvn test
    • 报告路径:target/surefire-reports/*.xml;Jenkins 添加 “Publish JUnit test result report” 指向该目录。
  • API 测试(Postman + Newman)
    • 运行测试:newman run collection.json --reporters junit,html
    • 报告:JUnit 结果 XML 由 Jenkins 收集展示。
  • 性能测试(JMeter)
    • 运行测试:jmeter -n -t test.jmx -l result.jtl
    • 说明:可结合插件或脚本将结果归档、对比趋势。

四 报告、通知与质量门禁

  • 报告可视化:安装 Allure Jenkins Plugin,在 Pipeline 的 post 阶段使用 allure includeProperties: false, jdk: ‘’, results: [[path: ‘target/allure-results’]] 生成可视化报告;JUnit 报告用于趋势与用例级结果。
  • 质量门禁:在 Jenkins 中配置 “Unstable/Failed 条件”(如测试失败即标记不稳定),配合 SonarQube 做静态扫描与质量阈值门禁,未达标则阻断后续阶段。
  • 通知告警:安装 Email Extension 插件,构建后根据结果发送邮件/企业微信/Slack 通知,及时反馈失败与回归状态。

五 稳定运行与扩展建议

  • 环境隔离:使用 Docker 在 Pipeline 中启动数据库、浏览器等依赖,减少“本机环境不一致”导致的 flaky 测试;示例 agent { docker { image ‘python:3.11-slim’ } }。
  • 并行与分布式:通过 Jenkins Agent 节点 并行执行多套测试(如多浏览器/多数据集),显著缩短回归时间。
  • 稳定性增强:为关键阶段添加 retry 逻辑,失败自动重试;对偶发性 UI/API 测试尤为有效。
  • 代码化管理:始终使用 Jenkinsfile 管理流水线,纳入版本控制,便于审计、回滚与复用。

0