主要更新: - 使用SSH私钥认证替代用户名密码认证 - 配置deploy-server-ssh-key凭据ID - 修复Jenkinsfile格式和缩进问题 - 添加SSH配置指南和企业级部署文档 技术改进: - 使用sshagent进行安全的SSH连接 - 移除sshpass依赖,提升安全性 - 统一使用root@116.62.163.84进行部署 - 优化Docker镜像传输和部署流程 新增文档: - SSH_CONFIG_GUIDE.md - SSH私钥配置指南 - ENTERPRISE_JENKINS_GUIDE.md - 企业级Jenkins部署 - jenkins-docker/ - Jenkins Docker化部署方案
269 lines
5.7 KiB
Markdown
269 lines
5.7 KiB
Markdown
# 企业级Jenkins CI/CD平台配置指南
|
||
|
||
## 🎯 平台特性
|
||
|
||
### ✅ 企业级功能
|
||
- **配置即代码**:使用JCasC实现Jenkins配置自动化
|
||
- **多项目类型支持**:Java Maven/Gradle、Node.js、Python、.NET
|
||
- **通用Pipeline模板**:无需编写复杂Jenkinsfile
|
||
- **安全扫描集成**:依赖检查、镜像安全扫描
|
||
- **多环境部署**:测试、预发布、生产环境自动化部署
|
||
- **通知集成**:邮件、Slack、钉钉等多种通知方式
|
||
|
||
### ✅ 开发友好
|
||
- **简化配置**:项目只需维护 `.ci-config.yml` 文件
|
||
- **自动检测**:自动识别项目类型和构建工具
|
||
- **并行构建**:支持多阶段并行执行,提升构建速度
|
||
- **智能缓存**:Maven仓库、Node模块等智能缓存
|
||
|
||
## 🚀 快速部署
|
||
|
||
### 1. 一键部署命令
|
||
```bash
|
||
# 克隆项目
|
||
git clone http://116.62.163.84:15006/wangtianqi/java_demo.git
|
||
cd java_demo/jenkins-docker
|
||
|
||
# 执行部署脚本
|
||
chmod +x deploy-enterprise.sh
|
||
./deploy-enterprise.sh
|
||
```
|
||
|
||
### 2. 手动部署步骤
|
||
```bash
|
||
# 构建镜像
|
||
docker-compose build
|
||
|
||
# 启动服务
|
||
docker-compose up -d
|
||
|
||
# 查看状态
|
||
docker-compose ps
|
||
```
|
||
|
||
## 🔧 项目接入指南
|
||
|
||
### 1. 创建项目配置文件
|
||
在项目根目录创建 `.ci-config.yml`:
|
||
|
||
```yaml
|
||
project:
|
||
name: "my-project"
|
||
type: "java-maven" # 或 java-gradle, nodejs, python
|
||
|
||
build:
|
||
jdk: "17" # Java项目专用
|
||
|
||
test:
|
||
unit_tests:
|
||
enabled: true
|
||
coverage:
|
||
threshold: 80
|
||
|
||
docker:
|
||
enabled: true
|
||
image_name: "my-project"
|
||
|
||
deploy:
|
||
target: "test"
|
||
```
|
||
|
||
### 2. 创建简化Jenkinsfile
|
||
```groovy
|
||
// 项目根目录的 Jenkinsfile
|
||
@Library('ci-cd-shared-library') _
|
||
|
||
def pipelineTemplate = libraryResource 'templates/universal-pipeline.groovy'
|
||
evaluate(pipelineTemplate)
|
||
```
|
||
|
||
### 3. 在Jenkins中创建Pipeline
|
||
1. 新建Pipeline项目
|
||
2. 配置Git仓库
|
||
3. 指定Jenkinsfile路径
|
||
4. 保存并构建
|
||
|
||
## 📋 支持的项目类型
|
||
|
||
### Java Maven项目
|
||
```yaml
|
||
project:
|
||
type: "java-maven"
|
||
build:
|
||
jdk: "17"
|
||
maven:
|
||
goals: ["clean", "compile", "test", "package"]
|
||
profiles: ["default"]
|
||
```
|
||
|
||
### Java Gradle项目
|
||
```yaml
|
||
project:
|
||
type: "java-gradle"
|
||
build:
|
||
jdk: "17"
|
||
gradle:
|
||
tasks: ["clean", "build", "test"]
|
||
```
|
||
|
||
### Node.js项目
|
||
```yaml
|
||
project:
|
||
type: "nodejs"
|
||
build:
|
||
nodejs:
|
||
version: "18"
|
||
package_manager: "npm"
|
||
build_command: "npm run build"
|
||
test_command: "npm test"
|
||
```
|
||
|
||
### Python项目
|
||
```yaml
|
||
project:
|
||
type: "python"
|
||
build:
|
||
python:
|
||
version: "3.9"
|
||
requirements_file: "requirements.txt"
|
||
test_command: "pytest"
|
||
```
|
||
|
||
## 🔐 安全配置
|
||
|
||
### 1. 凭据管理
|
||
平台预配置了以下凭据类型:
|
||
- Git仓库访问凭据
|
||
- SSH部署凭据
|
||
- SonarQube访问令牌
|
||
- Docker仓库凭据
|
||
|
||
### 2. 权限控制
|
||
- **管理员**:完整系统权限
|
||
- **开发人员**:项目构建和查看权限
|
||
- **只读用户**:仅查看权限
|
||
|
||
### 3. 安全扫描
|
||
- **依赖漏洞扫描**:自动检查第三方依赖安全问题
|
||
- **Docker镜像扫描**:检查镜像中的安全漏洞
|
||
- **代码质量门禁**:SonarQube质量门禁
|
||
|
||
## 🔄 CI/CD流程
|
||
|
||
### 标准流程
|
||
1. **代码检出**:从Git仓库获取最新代码
|
||
2. **环境检测**:自动检测和配置构建环境
|
||
3. **并行分析**:
|
||
- 代码编译
|
||
- 代码质量检查
|
||
4. **并行测试**:
|
||
- 单元测试
|
||
- 集成测试
|
||
5. **SonarQube分析**:代码质量和安全分析
|
||
6. **制品构建**:
|
||
- 应用打包
|
||
- Docker镜像构建
|
||
7. **安全扫描**:
|
||
- 依赖安全扫描
|
||
- 镜像安全扫描
|
||
8. **自动部署**:根据分支策略自动部署
|
||
9. **部署验证**:健康检查和功能验证
|
||
|
||
### 分支策略
|
||
- **main/master**:部署到生产环境(需要人工确认)
|
||
- **develop**:部署到测试环境
|
||
- **feature/***:运行测试,不部署
|
||
- **release/***:部署到预发布环境
|
||
|
||
## 📊 监控和通知
|
||
|
||
### 构建监控
|
||
- 构建状态实时显示
|
||
- 构建历史和趋势分析
|
||
- 测试报告和覆盖率报告
|
||
- 代码质量趋势
|
||
|
||
### 通知集成
|
||
支持多种通知方式:
|
||
```yaml
|
||
notifications:
|
||
email:
|
||
enabled: true
|
||
recipients: ["team@company.com"]
|
||
slack:
|
||
enabled: true
|
||
channel: "#ci-cd"
|
||
dingtalk:
|
||
enabled: true
|
||
webhook_url: "your-webhook-url"
|
||
```
|
||
|
||
## 🛠️ 日常运维
|
||
|
||
### 服务管理
|
||
```bash
|
||
# 启动服务
|
||
./start.sh
|
||
|
||
# 停止服务
|
||
./stop.sh
|
||
|
||
# 重启服务
|
||
./restart.sh
|
||
|
||
# 查看日志
|
||
./logs.sh # Jenkins日志
|
||
./logs.sh sonar # SonarQube日志
|
||
|
||
# 备份数据
|
||
./backup.sh
|
||
```
|
||
|
||
### 系统优化
|
||
1. **内存调优**:根据项目数量调整Jenkins内存
|
||
2. **并发控制**:配置合适的执行器数量
|
||
3. **缓存策略**:启用Maven、npm等缓存
|
||
4. **清理策略**:定期清理旧构建和工作空间
|
||
|
||
## 🔧 故障排查
|
||
|
||
### 常见问题
|
||
1. **构建失败**:检查项目配置和依赖
|
||
2. **部署失败**:验证SSH凭据和目标服务器
|
||
3. **插件问题**:重启Jenkins或重新安装插件
|
||
4. **性能问题**:增加内存或优化构建脚本
|
||
|
||
### 调试技巧
|
||
```bash
|
||
# 查看容器状态
|
||
docker-compose ps
|
||
|
||
# 查看详细日志
|
||
docker-compose logs -f jenkins
|
||
|
||
# 进入容器调试
|
||
docker exec -it jenkins-custom bash
|
||
|
||
# 检查网络连接
|
||
docker exec jenkins-custom curl -I http://116.62.163.84:15010
|
||
```
|
||
|
||
## 🚀 扩展开发
|
||
|
||
### 自定义Pipeline模板
|
||
1. 修改 `pipeline-templates/universal-pipeline.groovy`
|
||
2. 添加新的项目类型支持
|
||
3. 扩展部署策略
|
||
|
||
### 共享库开发
|
||
1. 创建Jenkins共享库项目
|
||
2. 实现通用构建方法
|
||
3. 在Jenkins中配置共享库
|
||
|
||
### 插件集成
|
||
1. 在Dockerfile中添加新插件
|
||
2. 在JCasC配置中添加插件配置
|
||
3. 重新构建Jenkins镜像
|
||
|
||
这个企业级配置提供了完整的CI/CD解决方案,支持快速接入新项目,无需复杂的Jenkinsfile编写。
|