一、环境准备与配置
-
Jenkins插件安装
-
登录Jenkins → Manage Jenkins → Plugins → 安装必备插件:
-
GitLab Plugin(集成GitLab)
-
HTML Publisher Plugin(展示测试报告)
-
Pipeline(定义流水线)
-
Pytest Report Plugin(解析pytest结果)
-
-
-
配置GitLab凭证
-
Manage Jenkins → Credentials → 添加GitLab API Token:
-
类型:
Secret text -
Secret:从GitLab
Settings → Access Tokens生成(权限:api、read_repository)
-
-
二、代码仓库与项目结构
-
GitLab代码规范
-
在PyCharm中确保项目结构符合:
bashproject-root/ ├── tests/ # 测试用例目录(test_*.py或*_test.py) ├── requirements.txt # Python依赖 ├── Jenkinsfile # Pipeline脚本 └── conftest.py # pytest配置 -
推送代码到GitLab仓库。
-
-
测试报告生成配置
-
在
pytest执行命令中添加报告参数(Jenkinsfile中调用):bashpytest --junitxml=test-results.xml --html=report.html
-
三、Jenkins流水线设置
步骤1:创建Pipeline任务
-
新建任务 → 选**Pipeline** → 输入任务名
-
Pipeline配置:
-
Definition:
Pipeline script from SCM -
SCM:
Git→ 填写GitLab仓库URL -
Credentials: 选择已配置的GitLab Token
-
Script Path:
Jenkinsfile(需在代码根目录)
-
步骤2:编写Jenkinsfile(核心脚本)
Groovy
pipeline { agent any stages { // 拉取代码 stage('Checkout') { steps { checkout scm } } // 安装依赖 stage('Setup') { steps { sh 'python -m venv venv' sh 'source venv/bin/activate && pip install -r requirements.txt' } } // 执行测试 stage('Test') { steps { sh 'source venv/bin/activate && pytest tests/ --junitxml=test-results.xml --html=report.html' } } // 发布报告 stage('Report') { steps { publishHTML target: [ allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: '.', reportFiles: 'report.html', reportName: 'HTML Report' ] junit 'test-results.xml' // 集成JUnit报告 } } } post { always { // 清理Python虚拟环境 sh 'rm -rf venv' } } }
步骤3:配置定时触发
-
在Pipeline任务配置页 → Build Triggers → 勾选
Build periodically -
日程表语法:
H 22 * * *(每天22:00构建)
四、高级优化与异常处理
-
失败重试机制
-
安装插件
pytest-rerunfailures,在pytest命令中添加:bashpytest --reruns 3 --reruns-delay 2 # 失败重试3次,间隔2秒
-
-
多节点 并发 执行
-
使用
pytest-xdist加速测试:bashpytest -n 4 # 4进程并行
-
-
GitLab Merge Request 验证
-
在GitLab项目设置 → Merge Request → 启用
Pipelines must succeed -
Jenkins自动触发MR流水线(需在Jenkinsfile中定义
when { changeRequest() })
-
五、验证与调试
-
手动触发测试
- Jenkins任务页 → Build Now → 查看Console Output日志
-
报告查看
- 构建完成后 → 左侧菜单**HTML Report**查看测试详情
-
常见问题排查
-
依赖安装失败 :确认
requirements.txt路径正确 -
权限错误:Jenkins用户需有Python环境执行权限
-
GitLab触发失败:检查API Token权限和Webhook配置(GitLab → Settings → Webhooks)
-
六、完整流程图示
html
graph LR A[PyCharm代码推送GitLab] --> B[Jenkins定时/触发构建] B --> C1[拉取代码] --> C2[安装依赖] --> C3[执行pytest] C3 --> D{测试通过?} D -- 是 --> E[发布HTML报告] D -- 否 --> F[邮件通知失败] --> G[开发修复]
通过以上步骤,可实现每日自动执行接口测试、生成可视化报告,并通过Jenkins-GitLab集成确保代码合并质量。若需扩展容器化执行,可在agent中配置Docker节点。