Jenkins自动化测试在Debian上如何进行
导读:在 Debian 上搭建 Jenkins 自动化测试环境 一 环境准备与安装 安装 Java 11(Jenkins 常用版本为 Java 8/11): 执行:sudo apt update && sudo apt ins...
在 Debian 上搭建 Jenkins 自动化测试环境
一 环境准备与安装
- 安装 Java 11(Jenkins 常用版本为 Java 8/11):
- 执行:
sudo apt update & & sudo apt install -y openjdk-11-jdk - 验证:
java -version
- 执行:
- 导入 Jenkins 仓库密钥与源(新版 Debian 建议使用签名方式):
- 执行:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.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-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /devref sudo apt update & & sudo apt install -y jenkins
- 执行:
- 启动并设置开机自启:
- 执行:
sudo systemctl enable --now jenkins - 查看状态:
sudo systemctl status jenkins
- 执行:
- 访问与解锁:
- 浏览器打开:http://< 服务器IP> :8080
- 初始管理员密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - 按向导完成插件安装与管理员设置。
二 插件与全局工具配置
- 常用插件(按需安装):
- Git、Pipeline、Maven Integration(Java/Maven 项目)、NodeJS(前端/Node 项目)、Selenium(UI 自动化)、HTML Publisher(HTML 报告)、Email Extension(邮件通知)、Allure(高级测试报告)、GitLab/GitHub Integration(代码托管集成)。
- 命令行安装示例:
sudo jenkins-plugin-cli --plugins gitlab-plugin selenium-plugin htmlpublisher pipeline-plugin
- 全局工具(Manage Jenkins → Global Tool Configuration):
- 配置 JDK 11(若系统已装可自动检测)。
- 配置 Maven(Name: Maven,自动安装或指定 MAVEN_HOME)。
- 配置 NodeJS(Name: NodeJS,选择所需版本)。
- 配置 Allure Commandline(Name: allure,指定安装目录或自动安装)。
三 创建任务与流水线示例
- Freestyle 任务(适合快速接入)
- 源码管理:选择 Git,填写仓库 URL 与分支。
- 构建触发器:可选 轮询 SCM(如
H/5 * * * *每 5 分钟)或 Webhook(与 GitLab/GitHub 集成)。 - 构建环境:勾选 Provide Node & npm(Node 项目)。
- 构建步骤:
- Maven:
mvn clean test - Node:
npm install & & npm test -- --ci - Python:
pip install -r requirements.txt & & python -m pytest tests/ --junitxml=results/pytest.xml
- Maven:
- 构建后操作:
- 归档构件:
**/target/*.jar或**/dist/*.zip - 测试报告:JUnit(
**/results/*.xml) - HTML 报告:HTML Publisher(目录与索引页)
- 邮件通知:Editable Email Notification(可结合
emailext)
- 归档构件:
- Pipeline 任务(推荐,可版本化管理)
- 方式一:在 Job 配置中选择 Pipeline script,直接粘贴脚本。
- 方式二:Pipeline script from SCM(从 Git 仓库加载 Jenkinsfile,便于团队协作)。
- 示例 Jenkinsfile(多语言 UI 测试 + 报告聚合):
pipeline { agent { label 'dism-test-node' } environment { LANGS = 'zh-Hans,en,ja,de,fr,es' GIT_REPO = 'https://gitcode.com/gh_mirrors/di/Dism-Multi-language' } stages { stage('拉取代码') { steps { git url: env.GIT_REPO, branch: 'main' } } stage('依赖安装') { steps { sh 'nuget restore Languages.sln' sh 'pip install -r requirements.txt' } } stage('多语言测试') { parallel { stage('UI测试') { steps { script { def langs = env.LANGS.split(',') langs.each { lang -> sh "pytest tests/ui_test.py --lang=${ lang} --junitxml=results/ui_${ lang} .xml" } } } } stage('字符串验证') { steps { sh 'python scripts/validate_translations.py --input-dir=Languages --output=results/translation_checks.xml' } } } } stage('测试报告生成') { steps { script { def allReports = findFiles(glob: 'results/*.xml') allReports.each { report -> junit allowEmptyResults: true, testResults: report.path } publishHTML(target: [ allowMissing: false, alwaysLinkToLastBuild: false, keepAll: true, reportDir: 'results/html', reportFiles: 'index.html', reportName: '测试报告' ]) } } } } post { success { slackSend channel: '#dism-ci', message: '✅ Dism-Multi-language测试通过' } failure { slackSend channel: '#dism-ci', message: '❌ Dism-Multi-language测试失败' sh 'curl -d "status=failed" https://api.example.com/notify' } } } - 说明:上述示例展示了 并行阶段、JUnit 报告聚合、HTML 报告发布与 通知,可按项目替换命令与路径。
四 触发策略与通知
- 触发策略
- SCM 轮询:简单可靠,适合无公网或 Webhook 受限环境(如
H/5 * * * *)。 - Webhook:提交即触发,效率高;需在 GitLab/GitHub 配置 Jenkins 服务 Hook,并在 Jenkins 安装对应集成插件。
- SCM 轮询:简单可靠,适合无公网或 Webhook 受限环境(如
- 通知与质量门禁
- 邮件通知:使用 Email Extension 定制主题与内容,结合构建状态(成功/失败/不稳定)发送。
- 即时通信:如 Slack 通知(需相应插件与 Webhook)。
- 质量门禁:在 Job 配置中勾选 “构建失败条件”(如测试失败、覆盖率下降、构建不稳定)阻止后续阶段或部署。
五 运行与排错要点
- 访问与端口
- 默认端口 8080;如启用 UFW:
sudo ufw allow 8080 - 如端口冲突,编辑
/lib/systemd/system/jenkins.service中的Environment="JENKINS_PORT=8081",然后sudo systemctl daemon-reload & & sudo systemctl restart jenkins
- 默认端口 8080;如启用 UFW:
- 权限与凭据
- 为 Git 配置 SSH 私钥或 Personal Access Token;在 Job 的 Credentials 中选择。
- 避免在代码中明文存放密钥,使用 Jenkins 凭据存储。
- 常见故障
- JAVA_HOME 未定义:在 Global Tool Configuration 显式配置 JDK,或在节点/Job 环境变量中设置。
- 测试报告为空:确认测试框架输出 JUnit XML 路径与 Jenkins 报告路径一致;必要时在构建步骤中打印
ls results/调试。 - 插件安装慢/失败:更换 更新站点镜像,或离线安装
.hpi插件包。 - UI 测试不稳定:使用 Selenium Grid 或容器化 Agent,固定浏览器版本,设置显式等待,减少并发冲突。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins自动化测试在Debian上如何进行
本文地址: https://pptw.com/jishu/789526.html
