这是一个基于 Spring Boot 的后端服务系统,使用 Maven 构建,支持 Docker 部署。
Official 是一个社团管理系统,旨在为社团提供完整的成员管理、简历投递和面试安排等功能。系统支持用户注册登录、权限管理、简历提交、面试调度等核心功能。
主要功能包括:
- 用户管理:注册、登录、修改信息、重置密码
- 认证与权限:基于 Spring Security 的 JWT 认证机制
- 简历投递:支持学生提交个人简历和获奖经历
- 面试安排:自动或手动分配面试时间
- 奖项经验管理:管理员可管理用户的奖项经验信息
- 全局搜索:支持用户和奖项信息的全局搜索和高级筛选
- Spring Boot 3.5.3
- MyBatis 3.5.15 + MySQL 8.0+
- Spring Security + JWT (jjwt 0.11.5)
- Redis
- Java 17
- 使用语义化版本号(SemVer)规范:主版本号.次版本号.补丁版本号
- 默认采用自动版本管理机制:向main分支推送代码时,CI/CD流程会自动递增补丁版本号
- 支持通过Git标签手动指定版本号
- Docker镜像版本与项目版本号保持一致
你可能会注意到版本号有时会跳转,例如从 0.0.1 直接跳到 1.0.0。这通常是由以下原因之一造成的:
- 手动标签推送:当使用Git标签(如
git tag v1.0.0)触发构建时,系统会直接使用标签中的版本号 - 里程碑版本发布:当项目达到一个重要里程碑时,开发者可能会手动将版本从
0.x.x提升到1.x.x - 首次构建:如果仓库中没有任何语义化版本标签,系统会从
0.0.1开始
- JDK 17
- Maven 3.x
- IDE(如 IntelliJ IDEA)
# 启动依赖服务 (MySQL和Redis)
make dev-up
# 查看服务状态
make status
# 停止服务
make dev-down然后在IDE中运行 OfficialApplication.java 文件中的 main 方法启动应用。
# 构建项目
./mvnw clean package
# 运行项目
./mvnw spring-boot:run或者直接运行 OfficialApplication.java 文件中的 main 方法。
本项目使用 Apifox 管理 API 接口文档,不再通过依赖方式生成文档。
本项目采用语义化版本号(SemVer)管理机制:
当向main分支推送代码时,CI/CD流程会自动执行以下操作:
- 从DockerHub获取当前最新版本号
- 自动递增补丁版本号(例如:1.0.0 → 1.0.1)
- 使用新版本号构建和推送Docker镜像
您也可以通过创建Git标签来手动指定版本号:
git tag v1.2.3
git push origin v1.2.3这样CI/CD流程会使用标签中的版本号(1.2.3)而不是自动生成版本号。
-
查看GitHub Actions日志
- 进入仓库的Actions选项卡
- 选择"Push to Docker Hub on main branch merge"工作流
- 查看"Build and push Docker image"步骤的输出
-
检查DockerHub标签
- 访问DockerHub仓库页面
- 查看Tags选项卡中的版本列表
-
使用本地测试脚本验证版本管理
# 测试版本自增逻辑 bash test_version_bump.sh # 测试从DockerHub获取真实标签 bash test_dockerhub_version.sh
为了避免版本号跳转带来的困惑,建议采取以下措施:
- 保持清晰的版本发布策略:在项目初期(0.x.x阶段)使用自动版本管理,当功能稳定后手动升级到1.0.0
- 规范Git标签使用:仅在重要里程碑使用手动标签,如重大功能发布或重大更新
- 文档记录:在CHANGELOG.md中记录每个版本的重要变更,便于追踪版本变化
- 沟通协调:团队成员间保持良好沟通,了解何时该使用自动版本,何时该使用手动标签
# 构建并启动完整测试环境(包括应用、MySQL和Redis)
make test-up
# 查看服务状态
make status
# 停止测试环境
make test-down-
登录到 Docker Hub:
docker login -u boyuanclub
-
构建并推送镜像到 Docker Hub:
# 构建并推送镜像 make deploy或者使用脚本方式:
./deploy.sh
-
在服务器上更新应用:
# 登录 Docker Hub(如果尚未登录) docker login -u boyuanclub # 拉取最新镜像并重启服务 make update
或者使用脚本方式:
./update.sh
-
构建项目:
# Linux/macOS ./mvnw clean package -DskipTests # Windows .\mvnw.cmd clean package -DskipTests
-
构建 Docker 镜像:
docker build -t boyuanclub/official:latest . -
推送到 Docker Hub:
docker push boyuanclub/official:latest
-
在服务器上运行:
# 拉取最新镜像 docker pull boyuanclub/official:latest # 启动服务 docker-compose up -d
-
构建项目:
./mvnw clean package
-
将生成的 JAR 文件上传到服务器:
scp target/Official-0.0.1-SNAPSHOT.jar user@server:/path/to/app/
-
在服务器上运行:
java -jar Official-0.0.1-SNAPSHOT.jar
项目提供了一系列便捷的管理命令:
# 显示所有可用命令
make help
# 构建项目
make build
# 本地启动应用
make local-up
# 查看服务日志
make dev-logs
# 初始化数据库
make init-db- 仅支持特定邮箱验证
- 简历包含个人简介、获奖情况等板块
- 支持自动分配面试时间或手动调度
- 系统可根据规则自动分配面试时间
- 支持管理员手动调整面试时间
- 面试时间确认后通知相关人员
- 部署前请确保已正确配置环境变量
- 数据库连接需要正确配置用户名和密码
- 邮件服务需要配置 SMTP 相关参数
- 短信服务需要配置相应的访问密钥