温馨提示×

Jenkins在Debian上如何进行单元测试

小樊
42
2025-12-07 00:46:57
栏目: 智能运维

在 Debian 上使用 Jenkins 执行单元测试的完整流程

一 环境准备与 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;检查状态:sudo systemctl status jenkins。
  • 首次访问 http://<服务器IP>:8080,解锁管理员账户,初始密码位于 /var/lib/jenkins/secrets/initialAdminPassword

二 安装必要插件

  • 进入 Manage Jenkins → Manage Plugins → Available,安装:Git pluginPipelineJUnitMaven Integration(Java 项目)、NodeJS Plugin(Node.js/npm 项目)。
  • 安装完成后可按需重启 Jenkins,并在 Manage Jenkins → Manage Plugins → Advanced → Restart Jenkins 完成重启。

三 准备示例项目与测试命令

  • Java + Maven 示例
    • 项目约定:测试类位于 src/test/java,使用 JUnit 运行测试,Maven 默认会执行测试并生成报告到 target/surefire-reports/TEST-*.xml
    • 常用命令:
      • 仅运行测试:mvn test
      • 跳过测试:mvn install -DskipTests
  • Python 示例
    • 安装依赖:sudo apt install -y python3-pytest(或 pip3 install pytest)
    • 运行测试并生成报告:python3 -m pytest tests/ --junitxml=reports/pytest.xml
  • Node.js 示例
    • 安装 Node 与依赖:sudo apt install -y nodejs npm;npm ci 或 npm install
    • 运行测试并输出 JUnit 报告(需 jest-junit 等适配器):npx jest --ci --reporters=jest-junit

四 创建任务与流水线示例

  • Freestyle 项目(适合快速接入)
    • 源码管理:选择 Git,填写仓库 URL。
    • 构建步骤:
      • Java/Maven:选择 Invoke top-level Maven targets,目标填 test
      • Python:选择 Execute shell,命令如:python3 -m pytest tests/ --junitxml=reports/pytest.xml。
      • Node.js:选择 Execute shell,命令如:npx jest --ci --reporters=jest-junit。
    • 构建后操作:点击 Add post-build action → Publish JUnit test result report,填写报告路径(如 target/surefire-reports/reports/pytest.xml)。
  • Pipeline 项目(推荐,可版本化管理流程)
    • 在仓库根目录创建 Jenkinsfile,示例:
      pipeline { agent any tools { nodejs ‘node-18’ } // 若使用 Node,需在 Global Tool Configuration 预置别名 stages { stage(‘Checkout’) { steps { git ‘https://github.com/your-org/your-repo.git’ } } stage(‘Build & Test’) { steps { sh ‘mvn -B -DskipTests clean compile’ sh ‘mvn -B test’ } } } post { always { junit ‘/target/surefire-reports/TEST-*.xml’ // 可选:归档产物 // archiveArtifacts artifacts: '/target/*.jar’, fingerprint: true } failure { // 可扩展:邮件、企业微信、钉钉等通知 echo ‘Build or tests failed.’ } } }
    • 在 Jenkins 中新建 Pipeline,选择 Pipeline script from SCM,指定仓库与 Jenkinsfile 路径。

五 触发策略与报告查看

  • 触发策略
    • 手动触发:在任务页面点击 立即扫描分支立即构建
    • 自动触发:在 GitHub/GitLab 配置 Webhook,Jenkins 接收到推送后自动执行构建与测试;也可在任务中配置 轮询 SCM(如 H/5 * * * * 每 5 分钟检查一次)。
  • 查看结果
    • 构建日志:在 Console Output 查看测试执行细节。
    • 测试报告:在构建页面点击 Test Result 查看 JUnit 报告趋势与失败用例;Python/Node 项目需确保生成 JUnit XML 并被 Jenkins 收集。

0