Jenkins在Debian上的集成测试
导读:在 Debian 上搭建 Jenkins 执行集成测试 一 环境准备与安装 安装 Java 11(Jenkins 官方推荐 LTS 版本): 执行:sudo apt update && sudo apt install...
在 Debian 上搭建 Jenkins 执行集成测试
一 环境准备与安装
- 安装 Java 11(Jenkins 官方推荐 LTS 版本):
- 执行:
sudo apt update & & sudo apt install -y openjdk-11-jdk - 验证:
java -version
- 执行:
- 安装 Jenkins(APT 方式):
- 导入密钥:
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 - 验证服务:
sudo systemctl status jenkins
- 导入密钥:
- 访问控制台:打开浏览器访问 http://< 服务器IP> :8080,首次解锁密码位于 /var/lib/jenkins/secrets/initialAdminPassword。
二 安全与基础配置
- 完成解锁后,安装常用插件:Git、Maven Integration、Pipeline(Manage Jenkins → Manage Plugins → Available)。
- 全局工具配置(Manage Jenkins → Global Tool Configuration):
- 配置 JDK 11(自动安装或指定已安装路径)。
- 配置 Maven(自动安装或指定 MAVEN_HOME)。
- 安全与权限(Manage Jenkins → Configure Global Security):
- 启用 CSRF 保护;按需配置 Agent → Master 安全、项目矩阵授权。
- 凭据管理(Manage Jenkins → Manage Credentials):
- 添加 SSH 私钥(拉取私有仓库)、用户名/密码、Secret text(如 API Token)等凭据,供 Job 使用。
三 创建集成测试流水线
- 示例一 多语言通用 Pipeline(Jenkinsfile,置于仓库根目录)
pipeline { agent any tools { jdk 'openjdk-11' // 与全局工具配置中的名称一致 maven 'maven-3' // 与全局工具配置中的名称一致 } environment { CI = true } stages { stage('Checkout') { steps { git branch: 'main', url: 'git@github.com:org/repo.git' } } stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('Unit & Integration Tests') { steps { sh 'mvn -B verify -Pintegration-tests' // 若使用 JUnit,可配合 junit 步骤归档报告 // junit '**/target/surefire-reports/*.xml,**/target/failsafe-reports/*.xml' } post { always { // 归档测试与覆盖率报告(按项目实际路径调整) archiveArtifacts artifacts: '**/target/*.log,**/target/*-reports/**', allowEmptyArchive: true } } } } post { success { echo 'Integration tests passed.' } failure { echo 'Integration tests failed.' } unstable { echo 'Tests were unstable.' } } } - 示例二 Python 项目 Pipeline
pipeline { agent any environment { PYTHONUNBUFFERED = '1' PIP_CACHE_DIR = "${ WORKSPACE} /.cache/pip" } stages { stage('Checkout') { steps { git branch: 'main', url: 'git@github.com:org/repo.git' } } stage('Install deps') { steps { sh 'pip install -r requirements.txt' } } stage('Integration Tests') { steps { sh 'pytest tests/integration --junitxml=reports/integration.xml' } } stage('Archive') { steps { junit 'reports/integration.xml' } } } } - 在 Jenkins 中新建 Pipeline 任务,选择 “Pipeline script from SCM”,指向上述 Jenkinsfile 仓库与分支即可。
四 触发策略与质量门禁
- 触发策略
- SCM 轮询:在 Job 配置中设置 “Poll SCM”,如
H/5 * * * *(每 5 分钟检查一次提交)。 - Webhook:在代码托管平台配置 GitHub/GitLab Webhook,指向 http:///github-webhook/(需安装 GitHub/GitLab 插件并开启 CSRF 豁免或正确 Token 配置)。
- SCM 轮询:在 Job 配置中设置 “Poll SCM”,如
- 质量门禁与报告
- 使用 JUnit 报告归档测试结果,结合 Post-build Actions 设置“不稳定/失败条件”(如失败用例数阈值)。
- 集成 SonarQube(SonarScanner 插件)进行代码质量门禁;在 Job 中执行
sonar-scanner并配置项目属性。 - 覆盖率(示例):Java 使用 JaCoCo,Maven 配置
jacoco:report,并在 Job 中归档**/target/site/jacoco/**报告,结合阈值判断质量门禁。
- 通知与协作
- Email Extension 插件发送构建结果邮件;可结合 Slack/企业微信 插件进行即时通知。
五 常见问题与排错要点
- 权限与凭据
- 拉取私有仓库失败:确认 SSH 私钥已添加至 Jenkins 凭据并在 Job 中使用;或改用 HTTPS + Personal Access Token。
- Java 与工具链
- 构建时报 “Java not found” 或 “Maven not found”:在 Global Tool Configuration 正确配置 JDK/Maven,或在节点上预装并配置 JAVA_HOME/MAVEN_HOME。
- 端口与防火墙
- 无法访问 8080:确认
sudo ufw allow 8080/tcp或云安全组已放行;必要时修改 /etc/default/jenkins 中的HTTP_PORT并重启服务。
- 无法访问 8080:确认
- 报告不显示
- 归档路径与报告生成路径不一致:检查构建日志与
archiveArtifacts/junit路径;确保测试框架输出到预期目录(如target/surefire-reports)。
- 归档路径与报告生成路径不一致:检查构建日志与
- 资源与稳定性
- 构建并发或大项目导致 OOM:为 Jenkins Agent 配置合适的 JVM 堆与 Docker/容器资源限制;必要时使用 Kubernetes/动态代理扩展执行节点。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Debian上的集成测试
本文地址: https://pptw.com/jishu/787289.html
