java_demo/JENKINS-SETUP.md

261 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

# 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"
```
### 🚨 常见问题解决
**问题1SSH连接失败**
```bash
# 解决方案检查SSH密钥配置
ssh-keygen -t rsa -b 4096
ssh-copy-id root@116.62.163.84
```
**问题2Docker权限问题**
```bash
# 解决方案添加jenkins用户到docker组
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
```
**问题3SonarQube连接失败**
```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流程了**