213 lines
5.2 KiB
Markdown
213 lines
5.2 KiB
Markdown
|
# 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容器化部署,确保环境一致性
|