在 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 plugin、Pipeline、JUnit、Maven 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 收集。