在 Ubuntu 上集成 Jenkins 与测试工具
一 环境准备与 Jenkins 安装
- 安装 Java 11(Jenkins 运行依赖):
- 命令:
sudo apt update && sudo apt install openjdk-11-jdk -y && java -version
- 安装 Jenkins(Ubuntu 20.04/22.04 推荐方式):
- 导入密钥与源(新版建议使用签名方式):
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- 安装与启动:
sudo apt update && sudo apt install jenkins -y
sudo systemctl start jenkins && sudo systemctl enable jenkins
- 访问控制台:打开浏览器进入 http://<服务器IP>:8080,完成解锁与初始插件安装。
二 插件与全局工具配置
- 常用插件(Manage Jenkins → Manage Plugins → 可选插件):
- Git Plugin、Pipeline、JUnit Plugin、HTML Publisher Plugin、Allure Plugin(按需安装)。
- 全局工具(Manage Jenkins → Global Tool Configuration):
- 配置 JDK 路径(如 OpenJDK 11)、Git、Maven/Gradle(按项目需要)。
三 典型测试工具集成示例
- Python + pytest(生成 JUnit XML,便于报表聚合)
- 安装依赖:
pip install pytest
- 执行测试:
pytest --junit-xml=test-results.xml
- Jenkins 构建后操作:添加 Publish JUnit test result report,设置 Test report XMLs 为
test-results.xml。
- Java + Maven + TestNG(结合 Allure 生成美观报告)
- 依赖示例(Maven):
testng、allure-testng、以及 maven-surefire-plugin(配置 argLine 引入 aspectjweaver)。
- 执行测试:
mvn clean test
- Jenkins 构建后操作:添加 Allure Report 步骤发布测试结果。
- Selenium UI 自动化(无头 Chrome/Firefox,建议容器化)
- 方式 A(本机安装浏览器与驱动,便于入门):
- 安装:
sudo apt install -y chromium-browser chromium-chromedriver
- 运行:
python3 test_selenium.py(脚本内使用 webdriver.Chrome() 或 ChromeOptions 启用无头模式)。
- 方式 B(Docker + Selenium Grid,环境隔离、便于并行与 CI):
- 启动 Selenium Grid(示例):
docker run --rm -d -p 4444:24444 -p 5900:25900 --name selenium-hub elgalu/selenium
- 测试代码连接 Grid:
webdriver.Remote(command_executor='http://localhost:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME)
- 如需查看执行画面,可用 VNC 连接容器端口 5900。
四 创建任务与流水线示例
- Freestyle 项目(适合快速接入)
- 源码管理:选择 Git,填写仓库 URL 与分支。
- 构建步骤:添加 Execute shell,填入对应测试命令(如
pytest ... 或 mvn test)。
- 构建后操作:添加 Publish JUnit test result report(JUnit XML 路径),如需可视化报告再添加 HTML Publisher Plugin。
- Pipeline 项目(推荐,可版本化管理流程)
- 在项目中放置 Jenkinsfile,示例:
- pipeline {
agent any
stages {
stage(‘Checkout’) { steps { git url: ‘https://github.com/your/repo.git’, branch: ‘main’ } }
stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } }
stage(‘Test’) {
steps { sh ‘pytest --junit-xml=target/report.xml’ }
post { always { junit ‘target/report.xml’ } }
}
stage(‘Report’) { steps { publishHTML(target: [reportDir: ‘target/report’, reportFiles: ‘index.html’, reportName: ‘HTML Report’]) } }
}
}
- 在 Jenkins 任务中选择 Pipeline script from SCM,指定仓库与
Jenkinsfile 路径。
五 常见问题与优化建议
- HTML 报告样式被拦截(Content Security Policy)
- 现象:报告页面样式丢失或空白。
- 处理:在 Manage Jenkins → Script Console 临时放宽策略(仅测试环境),例如:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
- 更优方案:使用 Allure Report 或将报告托管到外部静态站点。
- Selenium 无头与驱动匹配
- 在无头环境(如 CI)务必使用 无头模式 并确保 Chrome/Chromedriver 版本匹配;UI 测试优先采用 Selenium Grid + Docker 提升稳定性与可维护性。
- 报表路径与归档
- 确保测试框架输出到固定目录(如
target/ 或 reports/),并在 Jenkins 的 JUnit/HTML Publisher 中正确填写通配路径(如 **/test-reports/*.xml、target/report/index.html)。