温馨提示×

Debian Jenkins如何集成测试

小樊
31
2025-11-29 05:18:45
栏目: 智能运维

在 Debian 上搭建 Jenkins 并执行自动化测试

一 环境准备与安装

  • 安装 Java 11(Jenkins 运行依赖):
    • 执行:sudo apt update && sudo apt install -y openjdk-11-jdk
    • 验证:java -version
  • 安装 Jenkins(Debian 官方仓库):
    • 导入密钥:wget -q -O - https://pkg.jenkins.io/debian/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
    • 访问控制台:打开浏览器进入 http://<服务器IP>:8080
    • 解锁管理员:首次登录密码在 /var/lib/jenkins/secrets/initialAdminPassword
  • 防火墙放行(如使用 ufw):sudo ufw allow 8080/tcp

二 插件与全局工具配置

  • 建议安装的插件:
    • Git Plugin(源码管理)
    • Pipeline(流水线即代码)
    • Maven Integration(Java/Maven 项目)
    • NodeJS Plugin(前端/Node 项目)
    • Allure Commandline(测试报告)
    • 质量分析可选:SonarQube Scanner(代码质量)
  • 全局工具配置要点:
    • Manage Jenkins → Global Tool Configuration 中配置 JDK 11MavenNodeJSAllure 的安装路径或自动安装,便于在 Job 中直接引用。

三 创建任务与流水线示例

  • 方式一 Freestyle 任务(适合快速接入)
    • 新建任务 → 选择 Freestyle project → 源码管理选 Git 填写仓库 URL
    • 构建步骤执行测试命令(示例):
      • Python:pip install -r requirements.txt && python -m pytest tests/ --junitxml=reports/results.xml
      • Java/Maven:mvn clean test
    • 构建后操作添加测试结果报告:
      • JUnit:**/target/surefire-reports/*.xml****/reports/results.xml**
      • Allure:选择 Allure Report,结果路径指向 allure-results
  • 方式二 Pipeline(推荐,代码即流程)
    • 在仓库根目录创建 Jenkinsfile,示例:
      • Python + Pytest + Allure:
        pipeline {
          agent any
          tools { nodejs 'NodeJS' } // 如用到 Node
          stages {
            stage('Checkout') { steps { git 'https://github.com/your/repo.git' } }
            stage('Install')   { steps { sh 'pip install -r requirements.txt' } }
            stage('Test')      { steps { sh 'pytest tests/ --junitxml=reports/results.xml' } }
          }
          post {
            always {
              junit 'reports/results.xml'
              allure includeProperties: false, jdk: '', results: [[path: 'allure-results']]
            }
          }
        }
        
      • Java + Maven:
        pipeline {
          agent any
          tools { maven 'Maven' }
          stages {
            stage('Build & Test') { steps { sh 'mvn clean test' } }
          }
          post {
            always { junit 'target/surefire-reports/*.xml' }
          }
        }
        
    • 在 Jenkins 中新建 Pipeline 任务,选择 SCM 为 Git 并指向仓库(含 Jenkinsfile)。

四 触发策略与质量门禁

  • 触发策略
    • SCM 轮询:在 Job 配置中设置日程表达式(如 H/5 * * * * 每 5 分钟检查一次变更)
    • Webhook:在 GitHub/GitLab 项目设置 Webhook,指向 http:///github-webhook/,实现提交即触发
  • 质量门禁与报告
    • 单元测试与覆盖率:使用 JUnit 报告与覆盖率插件,设置构建状态阈值
    • 代码质量:集成 SonarQube,在 Jenkinsfile 中加入 Sonar 分析 Stage,失败则阻断合并
    • 性能测试:集成 JMeter(可用 Ant 或命令行执行 .jmx 脚本),归档 .jtl/.html 报告并发布趋势图。

五 常见问题与排障要点

  • 权限与路径
    • 确保 Jenkins 用户对项目目录与报告目录有读写权限(如使用 jenkins 用户运行:sudo chown -R jenkins:jenkins $WORKSPACE
  • Java 与工具版本
    • Global Tool Configuration 明确指定 JDK 11MavenNodeJSAllure 版本,避免环境漂移
  • 报告不显示
    • 确认测试命令输出了 JUnit XML(如 --junitxml=...),并在 Post-build Actions 正确设置报告路径
  • Webhook 未触发
    • 检查 CSRF 保护、Webhook 负载类型(JSON)、Jenkins URL 可达性与端口开放(默认 8080
  • JMeter 执行失败
    • 使用 Ant 或命令行执行 jmeter -n -t test.jmx -l result.jtl;确保 JMETER_HOME/libextras/ant-jmeter-*.jarclasspath 中。

0