java_demo/JENKINS_SETUP.md

213 lines
5.2 KiB
Markdown
Raw Normal View History

# Jenkins CI/CD 配置指南
## 🎯 项目信息
- **Git仓库**: http://116.62.163.84:15006/wangtianqi/java_demo.git
- **目标服务器**: 116.62.163.84
- **SonarQube服务器**: http://116.62.163.84:15010
- **SonarQube Token**: squ_7e4217cabd0faae6f3b8ee359b3b8e2ac52eb69a
## 📋 Jenkins配置步骤
### 1. 创建Pipeline项目
1. **登录Jenkins****新建任务**
2. **输入任务名称**: `java-demo-pipeline`
3. **选择Pipeline****确定**
### 2. 配置项目
#### 基本配置
- **描述**: Jenkins CI/CD Demo Project with Spring Boot 3
- **GitHub项目**: http://116.62.163.84:15006/wangtianqi/java_demo.git
#### Pipeline配置
- **Definition**: Pipeline script from SCM
- **SCM**: Git
- **Repository URL**: http://116.62.163.84:15006/wangtianqi/java_demo.git
- **Credentials**: 添加Git凭据用户名wangtianqi
- **Branch**: */main
- **Script Path**: Jenkinsfile
### 3. 必需的Jenkins插件
确保以下插件已安装:
```bash
# 必需插件列表
- Maven Integration Plugin
- JaCoCo Plugin
- SonarQube Scanner Plugin
- Docker Pipeline Plugin
- SSH Agent Plugin
- Publish Over SSH Plugin
- Blue Ocean Plugin (推荐)
```
### 4. 工具配置
#### 4.1 JDK配置
- **管理Jenkins** → **工具配置****JDK**
- **Name**: JDK-17
- **JAVA_HOME**: /usr/lib/jvm/java-17-openjdk
#### 4.2 Maven配置
- **管理Jenkins** → **工具配置****Maven**
- **Name**: Maven-3.9.3
- **MAVEN_HOME**: /opt/maven
#### 4.3 SonarQube配置
- **管理Jenkins** → **系统配置****SonarQube servers**
- **Name**: SonarQube
- **Server URL**: http://116.62.163.84:15010
- **Server authentication token**: squ_7e4217cabd0faae6f3b8ee359b3b8e2ac52eb69a
### 5. 凭据配置
#### 5.1 Git凭据
- **管理Jenkins** → **凭据管理****添加凭据**
- **类型**: Username with password
- **ID**: git-credentials
- **用户名**: wangtianqi
- **密码**: [您的Git密码]
#### 5.2 服务器SSH凭据用户名密码方式
- **管理Jenkins** → **凭据管理****添加凭据**
- **类型**: Username with password
- **ID**: deploy-server-ssh
- **用户名**: root (或您的服务器用户名)
- **密码**: [服务器用户密码]
- **描述**: Deploy Server SSH Credentials
> **注意**: 使用用户名密码方式需要在Jenkins服务器上安装 `sshpass` 工具。大多数现代Linux发行版都可以通过包管理器安装。
### 6. 环境要求
#### 6.1 Jenkins服务器环境
```bash
# 必需软件
- JDK 17
- Maven 3.9+
- Docker
- Git
- curl
```
#### 6.2 目标服务器环境 (116.62.163.84)
```bash
# 必需软件
- Docker
- Docker Compose (可选)
# 防火墙配置
- 开放端口 80 (生产环境)
- 开放端口 8080 (测试环境)
```
### 7. Pipeline流程
```mermaid
graph TD
A[代码检出] --> B[环境检查]
B --> C[编译]
C --> D[单元测试]
D --> E[代码质量扫描]
E --> F[打包]
F --> G[构建Docker镜像]
G --> H{分支判断}
H -->|develop/feature| I[部署到测试环境]
H -->|main/master| J[部署到生产环境]
I --> K[健康检查]
J --> K
K --> L[完成]
```
### 8. 部署说明
#### 8.1 测试环境部署
- **触发条件**: develop 或 feature/* 分支
- **端口**: 8080
- **容器名**: jenkins-demo-test
#### 8.2 生产环境部署
- **触发条件**: main 或 master 分支
- **端口**: 80
- **容器名**: jenkins-demo-prod
- **需要手动确认**
### 9. 监控地址
部署完成后的访问地址:
```bash
# 生产环境
http://116.62.163.84/api/health # 健康检查
http://116.62.163.84/api/users # 用户管理API
http://116.62.163.84/api/info # 应用信息
# 测试环境
http://116.62.163.84:8080/api/health # 健康检查
http://116.62.163.84:8080/api/users # 用户管理API
http://116.62.163.84:8080/api/info # 应用信息
```
### 10. 故障排除
#### 10.1 常见问题
**构建失败**
```bash
# 检查Jenkins日志
cat /var/log/jenkins/jenkins.log
# 检查Maven配置
mvn -version
# 检查JDK配置
java -version
```
**部署失败**
```bash
# 检查目标服务器Docker状态
docker ps -a
docker logs jenkins-demo-prod
# 检查端口占用
netstat -tlnp | grep :80
```
**SonarQube扫描失败**
```bash
# 检查SonarQube服务状态
curl http://116.62.163.84:15010/api/system/status
# 验证Token
curl -u squ_7e4217cabd0faae6f3b8ee359b3b8e2ac52eb69a: http://116.62.163.84:15010/api/authentication/validate
```
### 11. 构建触发器
可以配置以下触发器:
- **轮询SCM**: `H/5 * * * *` (每5分钟检查一次)
- **Webhook**: 在Git仓库配置Webhook
- **定时构建**: `H 2 * * *` (每天凌晨2点)
### 12. 通知配置
可以配置以下通知方式:
- **邮件通知**: 构建结果发送邮件
- **钉钉通知**: 集成钉钉机器人
- **企业微信**: 集成企业微信机器人
---
## 🎉 完成!
配置完成后您的团队就可以享受完整的CI/CD流程了
1. **代码提交****自动构建****自动测试****代码扫描****自动部署**
2. **质量保证**: 单元测试覆盖率、代码质量检查
3. **快速反馈**: 构建失败立即通知,快速定位问题
4. **环境一致性**: Docker容器化部署确保环境一致性