347 lines
8.5 KiB
Markdown
347 lines
8.5 KiB
Markdown
|
# Jenkins面板完整构建配置指南
|
|||
|
|
|||
|
## 🎯 项目信息
|
|||
|
- **Git仓库**: http://116.62.163.84:15006/wangtianqi/java_demo.git
|
|||
|
- **目标服务器**: 116.62.163.84
|
|||
|
- **SonarQube服务器**: http://116.62.163.84:15010
|
|||
|
- **认证方式**: 用户名密码(SSH)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 📋 第一部分:前期准备
|
|||
|
|
|||
|
### 1. 登录Jenkins
|
|||
|
1. 打开浏览器,访问您的Jenkins服务器:
|
|||
|
```
|
|||
|
http://您的Jenkins服务器IP:8080
|
|||
|
```
|
|||
|
2. 输入管理员用户名和密码登录
|
|||
|
|
|||
|
### 2. 安装必需插件
|
|||
|
**管理Jenkins** → **插件管理** → **可选插件**
|
|||
|
|
|||
|
搜索并安装以下插件:
|
|||
|
```
|
|||
|
✓ Maven Integration Plugin
|
|||
|
✓ JaCoCo Plugin
|
|||
|
✓ SonarQube Scanner Plugin
|
|||
|
✓ Docker Pipeline Plugin
|
|||
|
✓ SSH Agent Plugin
|
|||
|
✓ Git Plugin
|
|||
|
✓ Pipeline Plugin
|
|||
|
✓ Credentials Binding Plugin
|
|||
|
✓ Blue Ocean Plugin (推荐)
|
|||
|
```
|
|||
|
|
|||
|
**安装步骤:**
|
|||
|
1. 勾选需要的插件
|
|||
|
2. 点击 **"直接安装"**
|
|||
|
3. 等待安装完成并重启Jenkins
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 🔧 第二部分:系统配置
|
|||
|
|
|||
|
### 1. 配置全局工具
|
|||
|
**管理Jenkins** → **全局工具配置**
|
|||
|
|
|||
|
#### 1.1 JDK配置
|
|||
|
- 点击 **"新增JDK"**
|
|||
|
- **Name**: `JDK-17`
|
|||
|
- **JAVA_HOME**: `/usr/lib/jvm/java-17-openjdk`(Linux)或您的JDK安装路径
|
|||
|
- 取消勾选 **"自动安装"**
|
|||
|
|
|||
|
#### 1.2 Maven配置
|
|||
|
- 点击 **"新增Maven"**
|
|||
|
- **Name**: `Maven-3.9.3`
|
|||
|
- 勾选 **"自动安装"**
|
|||
|
- **版本**: 选择 `3.9.3`
|
|||
|
|
|||
|
#### 1.3 Git配置(如果需要)
|
|||
|
- 通常系统已有Git,保持默认即可
|
|||
|
|
|||
|
### 2. 配置SonarQube服务器
|
|||
|
**管理Jenkins** → **系统配置** → **SonarQube servers**
|
|||
|
|
|||
|
- 点击 **"Add SonarQube"**
|
|||
|
- **Name**: `SonarQube`
|
|||
|
- **Server URL**: `http://116.62.163.84:15010`
|
|||
|
- **Server authentication token**: `squ_7e4217cabd0faae6f3b8ee359b3b8e2ac52eb69a`
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 🔐 第三部分:凭据配置
|
|||
|
|
|||
|
### 1. 配置Git凭据
|
|||
|
**管理Jenkins** → **凭据** → **系统** → **全局凭据** → **添加凭据**
|
|||
|
|
|||
|
**Git仓库访问凭据:**
|
|||
|
- **类型**: `Username with password`
|
|||
|
- **范围**: `全局`
|
|||
|
- **用户名**: `wangtianqi`
|
|||
|
- **密码**: `[您的Git密码]`
|
|||
|
- **ID**: `git-credentials`
|
|||
|
- **描述**: `Git Repository Access`
|
|||
|
|
|||
|
### 2. 配置SSH服务器凭据
|
|||
|
**继续添加凭据**
|
|||
|
|
|||
|
**服务器SSH访问凭据:**
|
|||
|
- **类型**: `Username with password`
|
|||
|
- **范围**: `全局`
|
|||
|
- **用户名**: `root`
|
|||
|
- **密码**: `[您的服务器root密码]`
|
|||
|
- **ID**: `deploy-server-ssh`
|
|||
|
- **描述**: `Deploy Server SSH Access`
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 🚀 第四部分:创建Pipeline项目
|
|||
|
|
|||
|
### 1. 创建新项目
|
|||
|
1. 回到Jenkins首页
|
|||
|
2. 点击左侧 **"新建任务"** 或 **"New Item"**
|
|||
|
3. **输入任务名称**: `java-demo-pipeline`
|
|||
|
4. **选择类型**: `Pipeline`
|
|||
|
5. 点击 **"确定"**
|
|||
|
|
|||
|
### 2. 配置项目基本信息
|
|||
|
|
|||
|
#### 2.1 基本设置
|
|||
|
- **描述**:
|
|||
|
```
|
|||
|
Jenkins CI/CD Demo Project with Spring Boot 3
|
|||
|
用于演示完整的CI/CD流程,包括代码拉取、编译构建、单元测试、代码扫描、Docker打包和部署
|
|||
|
```
|
|||
|
|
|||
|
#### 2.2 构建保留策略
|
|||
|
- 勾选 **"丢弃旧的构建"**
|
|||
|
- **保持构建的最大个数**: `10`
|
|||
|
- **保持构建的天数**: `30`
|
|||
|
|
|||
|
#### 2.3 构建触发器(可选)
|
|||
|
- **GitHub hook trigger for GITScm polling**: 勾选此项实现代码提交自动构建
|
|||
|
- **轮询SCM**: 输入 `H/5 * * * *`(每5分钟检查一次代码变更)
|
|||
|
|
|||
|
### 3. 配置Pipeline
|
|||
|
|
|||
|
#### 3.1 Pipeline基本配置
|
|||
|
- **Definition**: 选择 `Pipeline script from SCM`
|
|||
|
- **SCM**: 选择 `Git`
|
|||
|
|
|||
|
#### 3.2 Git仓库配置
|
|||
|
- **Repository URL**:
|
|||
|
```
|
|||
|
http://116.62.163.84:15006/wangtianqi/java_demo.git
|
|||
|
```
|
|||
|
- **Credentials**: 选择之前创建的 `git-credentials`
|
|||
|
- **Branch Specifier**: `*/main`
|
|||
|
|
|||
|
#### 3.3 Script Path
|
|||
|
- **Script Path**: `Jenkinsfile`
|
|||
|
|
|||
|
#### 3.4 轻量级检出(推荐)
|
|||
|
- 勾选 **"Lightweight checkout"**
|
|||
|
|
|||
|
### 4. 保存配置
|
|||
|
点击页面底部的 **"保存"**
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 🎬 第五部分:执行构建
|
|||
|
|
|||
|
### 1. 立即构建
|
|||
|
1. 在项目主页点击左侧 **"立即构建"** 或 **"Build Now"**
|
|||
|
2. 系统开始执行Pipeline
|
|||
|
|
|||
|
### 2. 监控构建过程
|
|||
|
|
|||
|
#### 2.1 查看构建历史
|
|||
|
- 在左侧 **"构建历史"** 中可以看到构建列表
|
|||
|
- 点击构建号(如 #1)进入构建详情
|
|||
|
|
|||
|
#### 2.2 查看控制台输出
|
|||
|
- 在构建详情页面点击 **"控制台输出"**
|
|||
|
- 可以实时查看构建日志
|
|||
|
|
|||
|
#### 2.3 使用Blue Ocean界面(推荐)
|
|||
|
1. 点击左侧 **"Open Blue Ocean"**
|
|||
|
2. 可以看到可视化的Pipeline流程
|
|||
|
3. 每个阶段的状态一目了然
|
|||
|
|
|||
|
### 3. 构建阶段说明
|
|||
|
|
|||
|
构建将按以下顺序执行:
|
|||
|
|
|||
|
1. **🔄 Checkout** - 代码检出
|
|||
|
- 从Git仓库拉取最新代码
|
|||
|
- 显示Git提交ID
|
|||
|
|
|||
|
2. **🔍 环境检查** - 环境验证
|
|||
|
- 检查Java版本
|
|||
|
- 检查Maven版本
|
|||
|
- 检查Git版本
|
|||
|
|
|||
|
3. **🔨 编译** - 代码编译
|
|||
|
- 执行 `mvn clean compile`
|
|||
|
- 跳过测试阶段
|
|||
|
|
|||
|
4. **🧪 单元测试** - 测试执行
|
|||
|
- 运行所有单元测试
|
|||
|
- 生成测试报告和代码覆盖率
|
|||
|
|
|||
|
5. **🔍 代码质量扫描** - SonarQube分析
|
|||
|
- 静态代码分析
|
|||
|
- 代码质量评估
|
|||
|
|
|||
|
6. **📦 打包** - 应用打包
|
|||
|
- 生成可执行JAR文件
|
|||
|
- 归档构建产物
|
|||
|
|
|||
|
7. **🐳 构建Docker镜像** - 容器化
|
|||
|
- 构建Docker镜像
|
|||
|
- 创建版本标签
|
|||
|
|
|||
|
8. **📤 传输Docker镜像** - 镜像部署
|
|||
|
- 将镜像传输到目标服务器
|
|||
|
- 在目标服务器加载镜像
|
|||
|
|
|||
|
9. **🚀 部署应用** - 环境部署
|
|||
|
- **测试环境**: develop/feature分支 → 端口8080
|
|||
|
- **生产环境**: main/master分支 → 端口80
|
|||
|
|
|||
|
10. **🏥 健康检查** - 应用验证
|
|||
|
- 等待应用启动
|
|||
|
- 验证健康检查接口
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 📊 第六部分:查看构建结果
|
|||
|
|
|||
|
### 1. 构建状态说明
|
|||
|
- **🔵 蓝色**: 构建成功
|
|||
|
- **🔴 红色**: 构建失败
|
|||
|
- **🟡 黄色**: 构建不稳定(测试失败但编译成功)
|
|||
|
- **⚪ 灰色**: 构建被取消或未执行
|
|||
|
|
|||
|
### 2. 查看测试报告
|
|||
|
1. 进入构建详情页面
|
|||
|
2. 点击 **"测试结果"**
|
|||
|
3. 查看单元测试通过率和详细结果
|
|||
|
|
|||
|
### 3. 查看代码覆盖率
|
|||
|
1. 在构建详情页面找到 **"JaCoCo代码覆盖率"**
|
|||
|
2. 查看代码覆盖率报告
|
|||
|
3. 分析哪些代码未被测试覆盖
|
|||
|
|
|||
|
### 4. 查看SonarQube报告
|
|||
|
1. 构建成功后访问:`http://116.62.163.84:15010`
|
|||
|
2. 找到项目:`jenkins-demo`
|
|||
|
3. 查看代码质量分析结果
|
|||
|
|
|||
|
### 5. 验证部署结果
|
|||
|
构建成功后,根据分支验证部署:
|
|||
|
|
|||
|
**测试环境(develop分支):**
|
|||
|
```bash
|
|||
|
curl http://116.62.163.84:8080/api/health
|
|||
|
curl http://116.62.163.84:8080/api/users
|
|||
|
```
|
|||
|
|
|||
|
**生产环境(main分支):**
|
|||
|
```bash
|
|||
|
curl http://116.62.163.84/api/health
|
|||
|
curl http://116.62.163.84/api/users
|
|||
|
```
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 🔧 第七部分:故障排除
|
|||
|
|
|||
|
### 常见问题及解决方案
|
|||
|
|
|||
|
#### 1. Git克隆失败
|
|||
|
**现象**: `fatal: could not read Username`
|
|||
|
**解决**:
|
|||
|
- 检查Git凭据配置是否正确
|
|||
|
- 确认仓库URL可以访问
|
|||
|
- 验证用户名密码是否正确
|
|||
|
|
|||
|
#### 2. Maven构建失败
|
|||
|
**现象**: `command not found: mvn`
|
|||
|
**解决**:
|
|||
|
- 检查Maven工具配置
|
|||
|
- 确认Maven自动安装是否完成
|
|||
|
- 查看系统环境变量设置
|
|||
|
|
|||
|
#### 3. Docker构建失败
|
|||
|
**现象**: `Cannot connect to the Docker daemon`
|
|||
|
**解决**:
|
|||
|
- 确认Jenkins服务器已安装Docker
|
|||
|
- 检查Jenkins用户是否在docker组
|
|||
|
- 确认Docker服务是否运行
|
|||
|
|
|||
|
#### 4. SSH连接失败
|
|||
|
**现象**: `Permission denied (publickey,password)`
|
|||
|
**解决**:
|
|||
|
- 检查SSH凭据用户名密码
|
|||
|
- 确认目标服务器允许密码认证
|
|||
|
- 检查防火墙设置
|
|||
|
|
|||
|
#### 5. 健康检查失败
|
|||
|
**现象**: `应用健康检查失败,HTTP状态码: 000`
|
|||
|
**解决**:
|
|||
|
- 检查应用是否正常启动
|
|||
|
- 确认端口映射是否正确
|
|||
|
- 查看Docker容器日志
|
|||
|
|
|||
|
### 日志查看方式
|
|||
|
```bash
|
|||
|
# 查看构建日志
|
|||
|
Jenkins控制台输出
|
|||
|
|
|||
|
# 查看应用日志
|
|||
|
docker logs jenkins-demo-prod
|
|||
|
docker logs jenkins-demo-test
|
|||
|
|
|||
|
# 查看系统日志
|
|||
|
journalctl -u docker
|
|||
|
```
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 📈 第八部分:高级配置
|
|||
|
|
|||
|
### 1. 配置构建通知
|
|||
|
可以配置邮件、钉钉、企业微信等通知方式
|
|||
|
|
|||
|
### 2. 配置多分支Pipeline
|
|||
|
支持自动发现和构建Git仓库的多个分支
|
|||
|
|
|||
|
### 3. 配置并行构建
|
|||
|
充分利用服务器资源,加快构建速度
|
|||
|
|
|||
|
### 4. 配置构建缓存
|
|||
|
缓存Maven依赖,减少构建时间
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 🎉 完成!
|
|||
|
|
|||
|
配置完成后,您的CI/CD流程就搭建好了!
|
|||
|
|
|||
|
**工作流程:**
|
|||
|
1. 开发人员提交代码到Git仓库
|
|||
|
2. Jenkins自动检测代码变更
|
|||
|
3. 执行完整的构建、测试、部署流程
|
|||
|
4. 自动部署到对应环境
|
|||
|
5. 发送构建结果通知
|
|||
|
|
|||
|
**访问地址:**
|
|||
|
- Jenkins: `http://您的Jenkins服务器:8080`
|
|||
|
- SonarQube: `http://116.62.163.84:15010`
|
|||
|
- 应用生产环境: `http://116.62.163.84`
|
|||
|
- 应用测试环境: `http://116.62.163.84:8080`
|
|||
|
|
|||
|
现在您的团队可以享受高效的DevOps工作流程了!🚀
|