261 lines
5.5 KiB
Markdown
261 lines
5.5 KiB
Markdown
|
# Jenkins配置指南
|
|||
|
|
|||
|
## 🚀 Jenkins CI/CD配置完整指南
|
|||
|
|
|||
|
### 📋 前置条件检查
|
|||
|
|
|||
|
**Jenkins服务器要求:**
|
|||
|
- ✅ Jenkins 2.400+
|
|||
|
- ✅ JDK 17
|
|||
|
- ✅ Maven 3.9+
|
|||
|
- ✅ Docker
|
|||
|
- ✅ Git
|
|||
|
|
|||
|
**目标服务器要求:**
|
|||
|
- ✅ Docker已安装
|
|||
|
- ✅ SSH访问权限
|
|||
|
- ✅ 防火墙配置(80、8080端口)
|
|||
|
|
|||
|
### 🔧 Step 1: Jenkins插件安装
|
|||
|
|
|||
|
在 `Jenkins管理 → 插件管理` 中安装以下插件:
|
|||
|
|
|||
|
```
|
|||
|
必需插件:
|
|||
|
- Maven Integration Plugin
|
|||
|
- JaCoCo Plugin
|
|||
|
- SonarQube Scanner Plugin
|
|||
|
- Docker Pipeline Plugin
|
|||
|
- SSH Agent Plugin
|
|||
|
- Git Plugin
|
|||
|
- Pipeline Plugin
|
|||
|
|
|||
|
推荐插件:
|
|||
|
- Blue Ocean (可视化Pipeline)
|
|||
|
- Timestamper (时间戳)
|
|||
|
- Build Timeout (构建超时)
|
|||
|
- Workspace Cleanup (工作空间清理)
|
|||
|
```
|
|||
|
|
|||
|
### 🛠️ Step 2: 全局工具配置
|
|||
|
|
|||
|
进入 `Jenkins管理 → 全局工具配置`:
|
|||
|
|
|||
|
**JDK配置:**
|
|||
|
```
|
|||
|
名称: JDK-17
|
|||
|
JAVA_HOME: /usr/lib/jvm/java-17-openjdk
|
|||
|
自动安装: ✅ (如果需要)
|
|||
|
```
|
|||
|
|
|||
|
**Maven配置:**
|
|||
|
```
|
|||
|
名称: Maven-3.9.3
|
|||
|
自动安装: ✅
|
|||
|
版本: 3.9.3
|
|||
|
```
|
|||
|
|
|||
|
**SonarQube Scanner配置:**
|
|||
|
```
|
|||
|
名称: SonarQube Scanner
|
|||
|
自动安装: ✅
|
|||
|
版本: Latest
|
|||
|
```
|
|||
|
|
|||
|
**Docker配置:**
|
|||
|
```
|
|||
|
名称: Docker
|
|||
|
自动安装: ✅ (或指定Docker路径)
|
|||
|
```
|
|||
|
|
|||
|
### 🔐 Step 3: 凭据配置
|
|||
|
|
|||
|
进入 `Jenkins管理 → 凭据`:
|
|||
|
|
|||
|
**SSH密钥配置:**
|
|||
|
```
|
|||
|
域: 全局凭据
|
|||
|
类型: SSH Username with private key
|
|||
|
ID: deploy-server-ssh
|
|||
|
描述: Deploy Server SSH Key
|
|||
|
用户名: root
|
|||
|
私钥: [粘贴您的SSH私钥内容]
|
|||
|
```
|
|||
|
|
|||
|
**SonarQube Token配置:**
|
|||
|
```
|
|||
|
域: 全局凭据
|
|||
|
类型: Secret text
|
|||
|
ID: sonar-token
|
|||
|
Secret: squ_7e4217cabd0faae6f3b8ee359b3b8e2ac52eb69a
|
|||
|
描述: SonarQube Authentication Token
|
|||
|
```
|
|||
|
|
|||
|
### 🌐 Step 4: 系统配置
|
|||
|
|
|||
|
进入 `Jenkins管理 → 系统配置`:
|
|||
|
|
|||
|
**SonarQube服务器配置:**
|
|||
|
```
|
|||
|
名称: SonarQube
|
|||
|
服务器URL: http://116.62.163.84:15010
|
|||
|
认证令牌: [选择上面创建的sonar-token凭据]
|
|||
|
```
|
|||
|
|
|||
|
**全局属性(可选):**
|
|||
|
```
|
|||
|
环境变量:
|
|||
|
- DEPLOY_SERVER = 116.62.163.84
|
|||
|
- DOCKER_REGISTRY = 116.62.163.84:5000 (如果有私有仓库)
|
|||
|
```
|
|||
|
|
|||
|
### 📦 Step 5: 创建Pipeline项目
|
|||
|
|
|||
|
1. **新建项目:**
|
|||
|
```
|
|||
|
点击 "新建任务"
|
|||
|
输入项目名称: jenkins-demo
|
|||
|
选择: Pipeline
|
|||
|
点击 "确定"
|
|||
|
```
|
|||
|
|
|||
|
2. **配置项目:**
|
|||
|
```
|
|||
|
描述: Jenkins CI/CD Demo Project with Spring Boot 3
|
|||
|
|
|||
|
Pipeline配置:
|
|||
|
- Definition: Pipeline script from SCM
|
|||
|
- SCM: Git
|
|||
|
- Repository URL: http://116.62.163.84:15006/wangtianqi/java_demo.git
|
|||
|
- Credentials: [如果需要Git凭据]
|
|||
|
- Branch Specifier: */main
|
|||
|
- Script Path: Jenkinsfile
|
|||
|
```
|
|||
|
|
|||
|
3. **触发器配置:**
|
|||
|
```
|
|||
|
✅ GitHub hook trigger for GITScm polling (如果使用GitHub)
|
|||
|
✅ Poll SCM: H/5 * * * * (每5分钟检查一次代码变更)
|
|||
|
```
|
|||
|
|
|||
|
### 🖥️ Step 6: 目标服务器配置
|
|||
|
|
|||
|
在目标服务器(116.62.163.84)上运行配置脚本:
|
|||
|
|
|||
|
```bash
|
|||
|
# 1. 上传配置脚本到服务器
|
|||
|
scp server-setup.sh root@116.62.163.84:/tmp/
|
|||
|
|
|||
|
# 2. 登录服务器并运行配置
|
|||
|
ssh root@116.62.163.84
|
|||
|
chmod +x /tmp/server-setup.sh
|
|||
|
/tmp/server-setup.sh
|
|||
|
```
|
|||
|
|
|||
|
### 🔍 Step 7: SSH连接测试
|
|||
|
|
|||
|
在Jenkins服务器上测试SSH连接:
|
|||
|
|
|||
|
```bash
|
|||
|
# 测试SSH连接
|
|||
|
ssh -o StrictHostKeyChecking=no root@116.62.163.84 "echo 'SSH连接成功'"
|
|||
|
|
|||
|
# 测试Docker命令
|
|||
|
ssh root@116.62.163.84 "docker --version"
|
|||
|
```
|
|||
|
|
|||
|
### 🧪 Step 8: 第一次构建测试
|
|||
|
|
|||
|
1. **手动触发构建:**
|
|||
|
- 进入项目页面
|
|||
|
- 点击 "立即构建"
|
|||
|
- 查看构建日志
|
|||
|
|
|||
|
2. **检查构建阶段:**
|
|||
|
```
|
|||
|
✅ Checkout - 代码检出
|
|||
|
✅ 环境检查 - 工具版本验证
|
|||
|
✅ 编译 - Maven编译
|
|||
|
✅ 单元测试 - JUnit测试执行
|
|||
|
✅ 代码质量扫描 - SonarQube分析
|
|||
|
✅ 打包 - JAR文件生成
|
|||
|
✅ Docker镜像构建
|
|||
|
✅ 部署到目标服务器
|
|||
|
✅ 健康检查
|
|||
|
```
|
|||
|
|
|||
|
### 📊 Step 9: 监控和维护
|
|||
|
|
|||
|
**查看构建报告:**
|
|||
|
- 测试报告:项目页面 → Test Result
|
|||
|
- 代码覆盖率:项目页面 → Coverage Report
|
|||
|
- SonarQube报告:http://116.62.163.84:15010
|
|||
|
|
|||
|
**应用监控:**
|
|||
|
- 应用健康检查:http://116.62.163.84/api/health
|
|||
|
- 应用信息:http://116.62.163.84/api/info
|
|||
|
- API测试:http://116.62.163.84/api/users
|
|||
|
|
|||
|
**服务器维护:**
|
|||
|
```bash
|
|||
|
# 查看应用状态
|
|||
|
ssh root@116.62.163.84 "/opt/jenkins-demo/monitor.sh"
|
|||
|
|
|||
|
# 查看应用日志
|
|||
|
ssh root@116.62.163.84 "docker logs jenkins-demo-prod"
|
|||
|
|
|||
|
# 清理旧资源
|
|||
|
ssh root@116.62.163.84 "/opt/jenkins-demo/cleanup.sh"
|
|||
|
```
|
|||
|
|
|||
|
### 🚨 常见问题解决
|
|||
|
|
|||
|
**问题1:SSH连接失败**
|
|||
|
```bash
|
|||
|
# 解决方案:检查SSH密钥配置
|
|||
|
ssh-keygen -t rsa -b 4096
|
|||
|
ssh-copy-id root@116.62.163.84
|
|||
|
```
|
|||
|
|
|||
|
**问题2:Docker权限问题**
|
|||
|
```bash
|
|||
|
# 解决方案:添加jenkins用户到docker组
|
|||
|
sudo usermod -aG docker jenkins
|
|||
|
sudo systemctl restart jenkins
|
|||
|
```
|
|||
|
|
|||
|
**问题3:SonarQube连接失败**
|
|||
|
```bash
|
|||
|
# 解决方案:检查SonarQube服务状态
|
|||
|
curl -I http://116.62.163.84:15010
|
|||
|
```
|
|||
|
|
|||
|
**问题4:部署失败**
|
|||
|
```bash
|
|||
|
# 解决方案:检查目标服务器状态
|
|||
|
ssh root@116.62.163.84 "docker ps -a"
|
|||
|
ssh root@116.62.163.84 "docker logs jenkins-demo-prod"
|
|||
|
```
|
|||
|
|
|||
|
### 🎯 成功标准
|
|||
|
|
|||
|
构建成功后,您应该能够:
|
|||
|
|
|||
|
1. ✅ 在Jenkins中看到绿色的构建状态
|
|||
|
2. ✅ 访问 http://116.62.163.84/api/health 看到健康状态
|
|||
|
3. ✅ 访问 http://116.62.163.84/api/users 看到用户列表
|
|||
|
4. ✅ 在SonarQube中看到代码质量报告
|
|||
|
5. ✅ 在Jenkins中看到测试报告和代码覆盖率
|
|||
|
|
|||
|
### 📞 技术支持
|
|||
|
|
|||
|
如果遇到问题,请检查:
|
|||
|
1. Jenkins构建日志
|
|||
|
2. 目标服务器Docker日志
|
|||
|
3. SonarQube服务状态
|
|||
|
4. 网络连接状况
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
🎉 **配置完成后,您的团队就可以享受完整的CI/CD流程了!**
|