如何利用Jenkins和Ubuntu搭建自动化测试环境,实现高效测试流程?
- 内容介绍
- 文章标签
- 相关推荐
一、为什么要在 Ubuntu 上使用 Jenkins 搭建自动化测试环境?
痛点一:手工执行测试耗时且易出错——每次提交代码后都需要手动跑一遍回归,导致交付周期被拖慢。
痛点二:本地与 CI 环境不一致——开发机器的依赖版本和 CI 服务器不同。常出现“本地环境,实现高效测试流程?" src="/img01/1225844108。2440022351&fm=253&fmt=auto&app=120&f=jpg"/>
痛点三:缺乏统一的质量门禁——没有统一的建立、单元测试、代码检查流程,质量把控散乱。
使用 Jenkins + Ubuntu 可以实现:
- 全自动触发建立和测试,省去手动操作。
- 统一运行时环境,消除 “环境漂移”。
- 及报告。
二、环境准备与常用软件安装
1. 更新程序并安装 JDK 与 Maven
# 更新包索引
sudo apt update
# 安装 OpenJDK 11
sudo apt install -y openjdk-11-jdk
# 验证 Java 安装
java -version
# 安装 Maven
sudo apt install -y maven
# 验证 Maven 安装
mvn -version
2. 安装 Docker
Docker 能让你在同一台机器上隔离不同项目的依赖,避免冲突。
# 安装 Docker Engine
sudo apt install -y docker.io
# 添加当前使用者到 docker 组。以免每次都使用 sudo
sudo usermod -aG docker $USER
newgrp docker
# 验证 Docker 是否可用
docker run --rm hello-world
3. 安装 Jenkins
# 导入 Jenkins 公钥
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
# 添加 Jenkins 软件源
echo deb https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
# 更新索引并安装 Jenkins
sudo apt update
sudo apt install -y jenkins
# 启动并设置开机自启
sudo systemctl start jenkins
sudo systemctl enable jenkins
# 检查服务状态
sudo systemctl status jenkins
三、首次登录与基础配置
打开浏览器访问 http://your_server_ip:8080按照提示输入初始管理员密码:
# 获取默认密码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
再看完成以下步骤,
- 安装推荐插件。话说回来,
- 创建第一个管理员账户。
- 在「程序设置」里配置全局工具方法,确保「工具」页面能找到已安装的版本。其实,
四、关键插件安装与凭证配置
1. 必装插件列表
- Git Plugin: 拉取源码。
- Pipeline Plugin: 编写声明式流水线。
- Maven Integration Plugin**: 支持 Maven 建立。
- *Docker Pipeline* **: 在容器中执行建立/测试。
- *JUnit* 或 *Allure* 插件**: 可视化测试报告。
2. 添加凭证
在「凭证」→「程序」→「全局域」下添加:
- Git SSH Key / Username‑Password**:用于克隆私有仓库。
- Docker Registry 登录信息**。
- Selenium / ChromeDriver 下载地址或授权 token**。
五、编写 Jenkinsfile 实现完整流水线
a) 项目结构示例
.
├── src/
│ └── main/
├── pom.xml # Maven 项目文件
├── build.sh # 建立脚本
└── run-tests.sh # 测试执行脚本
└── Jenkinsfile # 声明式流水线定义文件
b) 示例 Jenkinsfile
// Declarative Pipeline 示例
pipeline {
agent any // 在任意可用节点上执行
environment {
MEN_HOME = "/usr/share/maven"
PATH = "${env.MEN_HOME}/bin:${env.PATH}"
}
stages {
stage {
steps {
git url: ':your/repo.git'。credentialsId: 'git-ssh-key',branch: 'main'
}
}
stage {
steps {
sh './build.sh' // 自定义建立脚本或直接使用 mvn 命令
}
}
stage {
steps {
sh './run-tests.sh' // 执行单元/集成测试脚本
}
post {
always {
junit '**/target/surefire-reports/*.xml' // 收集 JUnit 报告
}
}
}
stage {
steps {
archiveArtifacts artifacts: '**/target/*.jar',fingerprint: true
}
}
stage {
steps {
// 若使用 Allure 插件,可改为 allure
publishHTML(target:)
}
}
}
post {
success { echo '✅ 流水线成功完成!' }
failure { echo '❌ 流水线失败,请检查日志。' }
}
}
六、准备建立与测试脚本
a) build.sh
#!/bin/bash
set -e
echo "🔧 开始建立项目..."
# 使用 Maven 编译并打包,如果是其他语言请自行替换相应命令
mvn clean package -DskipTests
echo "✅ 建立完成。"
b) run-tests.sh
#!/bin/bash
set -e
echo "🚀 正在运行自动化测试..."
# 示例:运行 Maven 单元测试,也可以改为 pytest / npm test 等命令
mvn test
echo "✅ 测试执行完毕。"
确保两个脚本都有执行权限:
# 为脚本添加可执行权限
chmod +x build.sh run-tests.sh
七、创建流水线任务并触发建立
- 在 Jenkins 首页点击「新建任务」。 • 输入任务名称,例如 "My-AutoTest-Pipeline". • 选择「Pipeline」类型,点击「确定」。
- 在「流水线」配置页选择「Pipeline script from SCM」。• SCM 类型选择 Git。• 填写仓库 URL 与凭证 ID。• 分支填写 "*/main". • 脚本方法填写 "Jenkinsfile".
- 保存后返回任务页面点击 **Build Now** 即可手动触发;也可以在「触发器」中勾选 「GitHub hook trigger for GITScm」 或者 「定时建立」自动运行触发。
-
建立完成后在任务页面的「建立历史」中点击对应编号,即可查看:
- - 控制台输出了解每一步日志。
- - JUnit 报告或 Allure 报告展示详细的用例通过率与错误堆栈。
八、常见问题排查 & 调整建议
a) 建立卡在 Checkout 步骤?
- 确认 Git 凭证正确且拥有仓库读取权限;检查防火墙是否阻止 SSH/HTTPS 出站流量。
- If using SSH keys,ensure public key is added to Git server’s authorized_keys.
b) 测试阶段报错找不到依赖或驱动?
-
Maven 本地仓库缓存可能不完整,尝试先在服务器上手动运行
MEN_OPTS="-Dmaven.repo.local=/path/to/.m2/repository" mvn clean install -U. - If UI 自动化,需要 Chrome 与 ChromeDriver 对齐。可在 pipeline 中加入下载最新驱动的步骤:
# 示例:下载匹配当前 Chrome 的驱动
CHROME_VERSION=$
wget -q "https://chromedriver.storage.googleapis.com/${CHROME_VERSION}/chromedriver_linux64.zip"
unzip chromedriver_linux64.zip -d $HOME/bin
chmod +x $HOME/bin/chromedriver
export PATH=$HOME/bin:$PATH
b) 建立速度慢?
- LFS这方面。开启 Docker 缓存层或使用 Maven 本地仓库挂载到容器中,加速依赖拉取。
- AWS/ECR 私有镜像加速:在 Dockerfile 中指定国内镜像源。
- Caching:在 pipeline 中使用 `stash` / `unstash` 或 `cache` 步骤保存编译产物,以免重复编译。
d) 想要把结果发送给团队?
Add a post‑step:
// 邮件通知示例
post {
always {
mail to: '',subject: " Build ${currentBuild.currentResult}"。body: "查看详情请访问 ${env.BUILD_URL}"
}
}
九、 – 从手工到全自动的跃迁
每一步都不再依赖人工干预,可以解决了前文提到的“三大痛点”。后续可以继续 :
- 说到*持续部署*。加入 Docker 镜像打包并推送至私有仓库,实现“一键上线”。
- *质量门禁*的观点是,接入 SonarQube 静态分析。在 pipeline 中设置 “质量阈值” 阶段阻断不合格代码。
- *多分支策略*:为 feature / develop / release 分支分别配置不同的流水线,实现蓝绿部署或灰度发布。
🚀 掌握了这些。你就可以把繁琐的手工测试彻底抛弃,让交付更快、更稳、更安全!
一、为什么要在 Ubuntu 上使用 Jenkins 搭建自动化测试环境?
痛点一:手工执行测试耗时且易出错——每次提交代码后都需要手动跑一遍回归,导致交付周期被拖慢。
痛点二:本地与 CI 环境不一致——开发机器的依赖版本和 CI 服务器不同。常出现“本地环境,实现高效测试流程?" src="/img01/1225844108。2440022351&fm=253&fmt=auto&app=120&f=jpg"/>
痛点三:缺乏统一的质量门禁——没有统一的建立、单元测试、代码检查流程,质量把控散乱。
使用 Jenkins + Ubuntu 可以实现:
- 全自动触发建立和测试,省去手动操作。
- 统一运行时环境,消除 “环境漂移”。
- 及报告。
二、环境准备与常用软件安装
1. 更新程序并安装 JDK 与 Maven
# 更新包索引
sudo apt update
# 安装 OpenJDK 11
sudo apt install -y openjdk-11-jdk
# 验证 Java 安装
java -version
# 安装 Maven
sudo apt install -y maven
# 验证 Maven 安装
mvn -version
2. 安装 Docker
Docker 能让你在同一台机器上隔离不同项目的依赖,避免冲突。
# 安装 Docker Engine
sudo apt install -y docker.io
# 添加当前使用者到 docker 组。以免每次都使用 sudo
sudo usermod -aG docker $USER
newgrp docker
# 验证 Docker 是否可用
docker run --rm hello-world
3. 安装 Jenkins
# 导入 Jenkins 公钥
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
# 添加 Jenkins 软件源
echo deb https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
# 更新索引并安装 Jenkins
sudo apt update
sudo apt install -y jenkins
# 启动并设置开机自启
sudo systemctl start jenkins
sudo systemctl enable jenkins
# 检查服务状态
sudo systemctl status jenkins
三、首次登录与基础配置
打开浏览器访问 http://your_server_ip:8080按照提示输入初始管理员密码:
# 获取默认密码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
再看完成以下步骤,
- 安装推荐插件。话说回来,
- 创建第一个管理员账户。
- 在「程序设置」里配置全局工具方法,确保「工具」页面能找到已安装的版本。其实,
四、关键插件安装与凭证配置
1. 必装插件列表
- Git Plugin: 拉取源码。
- Pipeline Plugin: 编写声明式流水线。
- Maven Integration Plugin**: 支持 Maven 建立。
- *Docker Pipeline* **: 在容器中执行建立/测试。
- *JUnit* 或 *Allure* 插件**: 可视化测试报告。
2. 添加凭证
在「凭证」→「程序」→「全局域」下添加:
- Git SSH Key / Username‑Password**:用于克隆私有仓库。
- Docker Registry 登录信息**。
- Selenium / ChromeDriver 下载地址或授权 token**。
五、编写 Jenkinsfile 实现完整流水线
a) 项目结构示例
.
├── src/
│ └── main/
├── pom.xml # Maven 项目文件
├── build.sh # 建立脚本
└── run-tests.sh # 测试执行脚本
└── Jenkinsfile # 声明式流水线定义文件
b) 示例 Jenkinsfile
// Declarative Pipeline 示例
pipeline {
agent any // 在任意可用节点上执行
environment {
MEN_HOME = "/usr/share/maven"
PATH = "${env.MEN_HOME}/bin:${env.PATH}"
}
stages {
stage {
steps {
git url: ':your/repo.git'。credentialsId: 'git-ssh-key',branch: 'main'
}
}
stage {
steps {
sh './build.sh' // 自定义建立脚本或直接使用 mvn 命令
}
}
stage {
steps {
sh './run-tests.sh' // 执行单元/集成测试脚本
}
post {
always {
junit '**/target/surefire-reports/*.xml' // 收集 JUnit 报告
}
}
}
stage {
steps {
archiveArtifacts artifacts: '**/target/*.jar',fingerprint: true
}
}
stage {
steps {
// 若使用 Allure 插件,可改为 allure
publishHTML(target:)
}
}
}
post {
success { echo '✅ 流水线成功完成!' }
failure { echo '❌ 流水线失败,请检查日志。' }
}
}
六、准备建立与测试脚本
a) build.sh
#!/bin/bash
set -e
echo "🔧 开始建立项目..."
# 使用 Maven 编译并打包,如果是其他语言请自行替换相应命令
mvn clean package -DskipTests
echo "✅ 建立完成。"
b) run-tests.sh
#!/bin/bash
set -e
echo "🚀 正在运行自动化测试..."
# 示例:运行 Maven 单元测试,也可以改为 pytest / npm test 等命令
mvn test
echo "✅ 测试执行完毕。"
确保两个脚本都有执行权限:
# 为脚本添加可执行权限
chmod +x build.sh run-tests.sh
七、创建流水线任务并触发建立
- 在 Jenkins 首页点击「新建任务」。 • 输入任务名称,例如 "My-AutoTest-Pipeline". • 选择「Pipeline」类型,点击「确定」。
- 在「流水线」配置页选择「Pipeline script from SCM」。• SCM 类型选择 Git。• 填写仓库 URL 与凭证 ID。• 分支填写 "*/main". • 脚本方法填写 "Jenkinsfile".
- 保存后返回任务页面点击 **Build Now** 即可手动触发;也可以在「触发器」中勾选 「GitHub hook trigger for GITScm」 或者 「定时建立」自动运行触发。
-
建立完成后在任务页面的「建立历史」中点击对应编号,即可查看:
- - 控制台输出了解每一步日志。
- - JUnit 报告或 Allure 报告展示详细的用例通过率与错误堆栈。
八、常见问题排查 & 调整建议
a) 建立卡在 Checkout 步骤?
- 确认 Git 凭证正确且拥有仓库读取权限;检查防火墙是否阻止 SSH/HTTPS 出站流量。
- If using SSH keys,ensure public key is added to Git server’s authorized_keys.
b) 测试阶段报错找不到依赖或驱动?
-
Maven 本地仓库缓存可能不完整,尝试先在服务器上手动运行
MEN_OPTS="-Dmaven.repo.local=/path/to/.m2/repository" mvn clean install -U. - If UI 自动化,需要 Chrome 与 ChromeDriver 对齐。可在 pipeline 中加入下载最新驱动的步骤:
# 示例:下载匹配当前 Chrome 的驱动
CHROME_VERSION=$
wget -q "https://chromedriver.storage.googleapis.com/${CHROME_VERSION}/chromedriver_linux64.zip"
unzip chromedriver_linux64.zip -d $HOME/bin
chmod +x $HOME/bin/chromedriver
export PATH=$HOME/bin:$PATH
b) 建立速度慢?
- LFS这方面。开启 Docker 缓存层或使用 Maven 本地仓库挂载到容器中,加速依赖拉取。
- AWS/ECR 私有镜像加速:在 Dockerfile 中指定国内镜像源。
- Caching:在 pipeline 中使用 `stash` / `unstash` 或 `cache` 步骤保存编译产物,以免重复编译。
d) 想要把结果发送给团队?
Add a post‑step:
// 邮件通知示例
post {
always {
mail to: '',subject: " Build ${currentBuild.currentResult}"。body: "查看详情请访问 ${env.BUILD_URL}"
}
}
九、 – 从手工到全自动的跃迁
每一步都不再依赖人工干预,可以解决了前文提到的“三大痛点”。后续可以继续 :
- 说到*持续部署*。加入 Docker 镜像打包并推送至私有仓库,实现“一键上线”。
- *质量门禁*的观点是,接入 SonarQube 静态分析。在 pipeline 中设置 “质量阈值” 阶段阻断不合格代码。
- *多分支策略*:为 feature / develop / release 分支分别配置不同的流水线,实现蓝绿部署或灰度发布。
🚀 掌握了这些。你就可以把繁琐的手工测试彻底抛弃,让交付更快、更稳、更安全!

