# springboot-cicd-demo **Repository Path**: BigDeng_Hh/springboot-cicd-demo ## Basic Information - **Project Name**: springboot-cicd-demo - **Description**: cicd测试仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-25 - **Last Updated**: 2025-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Jenkins CI/CD Demo - Spring Boot 3 这是一个用于 Jenkins CI/CD 测试的 Spring Boot 3 示例项目,支持多分支自动部署。 ## 项目信息 - Spring Boot 版本: 3.2.1 - Java 版本: 21 - 构建工具: Maven ## 快速开始 ### 本地运行 ```bash # 编译项目 mvn clean compile # 运行测试 mvn test # 打包应用 mvn package # 运行应用(开发环境) java -jar target/jenkins-demo-1.0.0.jar --spring.profiles.active=dev ``` ### 访问接口 应用启动后,可以访问以下接口: - Hello 接口: http://localhost:8080/api/hello - Health 接口: http://localhost:8080/api/health - Actuator Health: http://localhost:8080/actuator/health ## 多分支部署策略 项目支持基于 Git 分支的自动部署: | 分支 | 环境 | 部署方式 | 部署目录 | |------|------|----------|----------| | dev/develop | 开发环境 | 自动部署 | /opt/apps/dev | | test/release | 测试环境 | 自动部署 | /opt/apps/test | | main/master | 生产环境 | 需人工确认 | /opt/apps/prod | | 其他分支 | - | 仅构建不部署 | - | ### 环境配置 每个环境有独立的配置文件: - `application-dev.yml` - 开发环境(DEBUG 日志) - `application-test.yml` - 测试环境(INFO 日志) - `application-prod.yml` - 生产环境(WARN 日志) ## 部署脚本 项目包含三个部署脚本: ### scripts/deploy-dev.sh - 内存配置: 512MB - 自动停止旧进程 - 健康检查(30次重试) ### scripts/deploy-test.sh - 内存配置: 1GB - 自动停止旧进程 - 健康检查(30次重试) - 备份旧版本 ### scripts/deploy-prod.sh - 内存配置: 2GB - G1 垃圾回收器 - 健康检查(60次重试) - 自动备份(保留最近5个版本) - 失败自动回滚 ## Jenkins 配置 ### 1. 创建多分支流水线 在 Jenkins 中创建 "Multibranch Pipeline" 项目: 1. 新建任务 → 选择 "Multibranch Pipeline" 2. 配置 Git 仓库: https://gitee.com/BigDeng_Hh/springboot-cicd-demo.git 3. 添加凭据(如需要) 4. 保存配置 Jenkins 会自动扫描所有分支并为每个分支创建流水线。 ### 2. 前置要求 确保 Jenkins 中已配置: - Maven 3.9 (工具名称: Maven 3.9) - JDK 21 (工具名称: JDK 21) ### 3. 测试多分支部署 ```bash # 创建并推送 dev 分支 git checkout -b dev git push origin dev # 创建并推送 test 分支 git checkout -b test git push origin test # 推送到 main 分支(需要人工确认) git checkout main git push origin main ``` ## 流水线阶段 1. **Checkout** - 检出代码 2. **Build** - 编译项目 3. **Test** - 运行单元测试 4. **Package** - 打包应用 5. **Archive** - 归档构建产物 6. **Deploy** - 根据分支自动部署 - dev/develop → 开发环境 - test/release → 测试环境 - main/master → 生产环境(需确认) ## 项目结构 ``` . ├── src/ │ ├── main/ │ │ ├── java/com/example/demo/ │ │ │ ├── JenkinsDemoApplication.java │ │ │ └── controller/ │ │ │ └── HelloController.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── application-dev.yml │ │ ├── application-test.yml │ │ └── application-prod.yml │ └── test/ │ └── java/com/example/demo/ │ ├── JenkinsDemoApplicationTests.java │ └── controller/ │ └── HelloControllerTest.java ├── scripts/ │ ├── deploy-dev.sh │ ├── deploy-test.sh │ └── deploy-prod.sh ├── pom.xml ├── Jenkinsfile ├── Dockerfile └── README.md ``` ## 手动部署 如果需要手动部署到服务器: ```bash # 1. 打包 mvn clean package # 2. 上传到服务器 scp target/jenkins-demo-1.0.0.jar user@server:/opt/apps/ # 3. 在服务器上执行部署脚本 ssh user@server cd /path/to/project ./scripts/deploy-test.sh ``` ## 监控和日志 查看应用日志: ```bash # 开发环境 tail -f /opt/apps/dev/app.log # 测试环境 tail -f /opt/apps/test/app.log # 生产环境 tail -f /opt/apps/prod/app.log ``` 查看进程状态: ```bash # 查看进程 ps aux | grep jenkins-demo # 查看端口 netstat -tlnp | grep 8080 ```