傻瓜式部署指南
目标:从零开始,把项目部署到Linux服务器,使用Docker运行,集成到Jenkins,代码托管在Git仓库
预计时间:30-60分钟
难度:![]()
(超简单)
前置条件(必须有)
在开始之前,请确保你有:
- 一个GitHub/GitLab账户(用于托管代码)
- 一台Linux服务器(Ubuntu 20+ 或 CentOS 8+)
- Linux服务器可以上网
- 一个Jenkins服务器(已安装)
- 本地电脑有Git命令行工具
第一步:初始化本地Git仓库(5分钟)
1.1 在项目目录初始化Git
cd "D:\百音引擎项目\interface_test"
# Windows PowerShell 执行
git init
git config user.name "你的名字"
git config user.email "你的邮箱@example.com"
1.2 创建 .gitignore 文件
在项目根目录创建 .gitignore 文件(排除不需要的文件):
# 创建文件
cat > .gitignore << 'EOF'
# Python
__pycache__/
*.py[cod]
*$py.class
.venv/
venv/
ENV/
# IDE
.vscode/
.idea/
*.swp
*.swo
# Reports
api_test_report_*.html
api_test_report_*.xlsx
# OS
.DS_Store
Thumbs.db
# Logs
*.log
EOF
1.3 添加所有文件到Git
git add .
git commit -m "Initial commit: API自动化测试框架
- 多环境支持(test/uat/prod)
- Docker容器化
- Jenkins集成
- 详细文档"
第二步:创建远程Git仓库(5分钟)
2.1 在GitHub/GitLab创建新仓库
GitHub步骤:
- 访问 https://github.com/new
- 输入仓库名:
api-test-framework - 描述:
API自动化测试框架 - 支持多环境、Docker、Jenkins - 选择 Public(如果是私有项目选Private)
- 点击 Create repository
获取仓库URL:
- HTTPS:
https://github.com/你的用户名/api-test-framework.git - SSH:
git@github.com:你的用户名/api-test-framework.git
2.2 推送代码到远程仓库
# 添加远程仓库地址
git remote add origin https://github.com/你的用户名/api-test-framework.git
# 推送到远程(第一次)
git branch -M main
git push -u origin main
# 后续推送只需要
git push
第三步:Linux服务器准备(10分钟)
3.1 连接到Linux服务器
# 从本地电脑连接到服务器
ssh root@你的服务器IP
# 或
ssh ubuntu@你的服务器IP
3.2 检查并安装Docker
# 检查Docker是否已安装
docker --version
# 如果未安装,执行以下命令(Ubuntu)
sudo apt update
sudo apt install -y docker.io docker-compose
# 如果是CentOS
sudo yum install -y docker docker-compose
# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker run hello-world
3.3 检查并安装Git
# 检查Git是否已安装
git --version
# 如果未安装
sudo apt install -y git # Ubuntu
# 或
sudo yum install -y git # CentOS
3.4 创建项目目录
# 创建项目目录
sudo mkdir -p /opt/api-test
sudo chown -R $USER:$USER /opt/api-test
cd /opt/api-test
第四步:克隆项目到服务器(5分钟)
cd /opt/api-test
# 克隆代码
git clone https://github.com/你的用户名/api-test-framework.git .
# 验证文件是否齐全
ls -la
应该看到:
Dockerfile
docker-compose.yml
api_test.py
env_config.py
requirements.txt
README.md
等...
第五步:在Linux上测试Docker运行(10分钟)
5.1 构建Docker镜像
cd /opt/api-test
# 构建镜像(第一次会很慢,10-15分钟)
docker-compose build
5.2 运行第一次测试
# 创建报告目录
mkdir -p reports
# 测试环境运行
DEPLOY_ENV=test docker-compose run --rm api-test-runner
# 查看报告
ls -la reports/
预期输出:
✅ 所有测试用例运行成功!
HTML测试报告已生成:api_test_report_api_cases_test_*.html
第六步:配置Jenkins(15分钟)
6.1 进入Jenkins Web界面
打开浏览器访问:
http://你的Jenkins服务器IP:8080
6.2 创建新Pipeline任务
- 点击 + 新建Item
- 输入任务名称:
api-test-framework - 选择 Pipeline
- 点击 OK
6.3 配置Pipeline
第一部分:General
- 描述:
API自动化测试框架 - 多环境支持
第二部分:Parameters
- 点击 Add Parameter
- 选择 Choice Parameter
- 配置:
- Name:
DEPLOY_ENV - Choices:
test uat prod
- Name:
第三部分:Pipeline
- Definition: 选择 Pipeline script from SCM
- SCM: 选择 Git
-
配置Git:
- Repository URL:
https://github.com/你的用户名/api-test-framework.git - Credentials: 如需认证,点击 Add 添加用户名/密码
- Branch:
*/main - Script Path:
Jenkinsfile
- Repository URL:
点击 Save
6.4 首次运行Pipeline
- 点击 Build with Parameters
- 选择 DEPLOY_ENV:
test - 点击 Build
查看构建日志:
- 点击左侧 #1 查看构建进度
- 点击 Console Output 查看详细日志
第七步:验证完整流程(5分钟)
7.1 验证Git仓库
# 确认远程仓库有代码
git remote -v
git log --oneline
7.2 验证Docker运行
cd /opt/api-test
# 再次运行测试
DEPLOY_ENV=uat docker-compose run --rm api-test-runner
# 检查报告
ls -la reports/api_test_report_*uat*
7.3 验证Jenkins任务
- 打开Jenkins Web界面
- 点击你创建的任务
api-test-framework - 点击 Build History 查看构建记录
- 点击最新的构建号查看详情
- 点击 Console Output 确认执行成功
第八步:配置定时任务(可选,5分钟)
8.1 在Jenkins中设置定时执行
- 进入任务配置页面
- 找到 Build Triggers
- 勾选 Poll SCM
- 输入 Cron 表达式(每天上午10点执行):
0 10 * * *
8.2 定时任务含义
分钟 小时 日 月 周几
0 10 * * * 每天上午10点执行
0 10 * * 1-5 工作日上午10点执行
0 */6 * * * 每6小时执行一次
0 2 * * * 每天凌晨2点执行
检查清单
完成以下所有步骤,确保部署成功:
- Git仓库已初始化,代码已推送到GitHub/GitLab
- Linux服务器已安装Docker和Git
-
项目代码已克隆到
/opt/api-test - Docker镜像已成功构建
- 本地Docker测试已通过(能生成报告文件)
- Jenkins任务已创建
- Jenkins能够参数化执行(Build with Parameters)
- 至少成功运行过一次Pipeline
- 报告文件已生成并包含环境标识
快速命令参考
本地操作
# Git初始化和提交
git init
git add .
git commit -m "message"
git remote add origin <url>
git push -u origin main
# 后续更新
git add .
git commit -m "message"
git push
服务器操作
# 连接服务器
ssh root@IP
# Docker操作
docker-compose build
DEPLOY_ENV=test docker-compose run --rm api-test-runner
# Git更新代码
cd /opt/api-test
git pull
Jenkins操作
Build with Parameters → 选择环境 → Build
常见问题速解
Q1: Git提交报错"fatal: not a git repository"
解决:
cd 到项目目录
git init
Q2: Docker镜像构建失败
解决:
# 检查网络
ping 8.8.8.8
# 重试构建
docker-compose build --no-cache
Q3: Jenkins连接Git仓库失败
解决:
- 检查仓库URL是否正确
- 如果是私有仓库,需要添加SSH密钥或用户名/密码
- 在Jenkins系统设置中配置凭证
Q4: 报告文件找不到
解决:
# 检查reports目录
ls -la /opt/api-test/reports/
# 检查容器日志
docker logs <container-id>
Q5: Jenkins无法访问
解决:
# 检查Jenkins是否运行
ps aux | grep jenkins
# 检查端口8080是否打开
netstat -tlnp | grep 8080
# 检查防火墙
sudo ufw allow 8080
需要帮助?
-
查看详细文档:
- README.md - 项目介绍
- DEPLOYMENT_GUIDE.md - 部署详情
- DOCKER_GUIDE.md - Docker详情
- USER_GUIDE.md - 使用指南
-
查看日志:
- Docker日志:
docker logs <container-id> - Jenkins日志:Jenkins Web界面 → Console Output
- 服务器日志:
/var/log/
- Docker日志:
-
测试连通性:
# 测试Git连接 git clone <url>
# 测试Docker运行 docker run hello-world
# 测试Jenkins API curl http://localhost:8080
---
## 📊 部署架构
┌─────────────────────────────────────────────┐ │ GitHub/GitLab 仓库 │ │ (代码托管) │ └─────────────────────────────────────────────┘ ↓ git clone/pull ┌─────────────────────────────────────────────┐ │ Linux 服务器 /opt/api-test │ │ ┌─────────────────────────────────────┐ │ │ │ Docker 容器 │ │ │ │ ┌───────────────────────────────┐ │ │ │ │ │ Python 环境 │ │ │ │ │ │ - api_test.py │ │ │ │ │ │ - env_config.py │ │ │ │ │ │ - requirements.txt │ │ │ │ │ └───────────────────────────────┘ │ │ │ └─────────────────────────────────────┘ │ └─────────────────────────────────────────────┘ ↑ 触发 ┌─────────────────────────────────────────────┐ │ Jenkins (CI/CD) │ │ - 参数化Build(环境选择) │ │ - 定时执行(Cron) │ │ - 报告发布 │ └─────────────────────────────────────────────┘
---
## ✨ 下一步
部署完成后,你可以:
1. **配置邮件通知**:当测试失败时,Jenkins自动发送邮件
2. **集成钉钉通知**:实时推送测试结果
3. **配置测试报告展示**:在Jenkins界面展示HTML报告
4. **设置性能监控**:监控测试响应时间趋势
详见各个技术文档。
---
**🎉 恭喜!你已经完成了完整的CI/CD部署!**
现在你可以:
- ✅ 本地开发,推送代码到Git
- ✅ Git自动触发Jenkins构建
- ✅ Jenkins自动构建Docker镜像
- ✅ Docker自动运行测试
- ✅ 自动生成并展示测试报告
**Happy Testing! 🚀**