2025-06-25 16:56:36 +08:00
2025-06-25 13:26:35 +08:00
111
2025-06-25 15:54:56 +08:00
2025-06-25 13:26:35 +08:00
2025-06-25 13:26:35 +08:00
2025-06-25 15:12:40 +08:00
2025-06-25 15:12:40 +08:00
2025-06-25 13:26:35 +08:00
2025-06-25 13:26:35 +08:00

Golang Demo - 现代化Web API项目

这是一个基于Gin框架的现代化Go web项目专为Jenkins CI/CD部署流程设计。

🚀 特性

  • 现代Go技术栈: 使用Go 1.21+和最新的依赖包
  • Gin Web框架: 高性能的HTTP web框架
  • 结构化日志: 使用Zap进行高性能日志记录
  • 优雅关闭: 支持优雅的服务器关闭
  • 健康检查: 内置健康检查端点,适合容器化部署
  • Docker支持: 多阶段构建,优化镜像大小
  • CI/CD就绪: 包含完整的Jenkins Pipeline配置

📋 API端点

基础端点

  • GET / - 欢迎页面
  • GET /ping - 简单的ping测试
  • GET /health - 健康检查(适合负载均衡器)
  • GET /version - 版本信息

API端点 (v1)

  • GET /api/v1/status - API状态信息
  • GET /api/v1/time - 当前时间信息
  • POST /api/v1/echo - 回显请求body

🛠️ 技术栈

  • 语言: Go 1.21+
  • Web框架: Gin v1.9.1
  • 日志: Zap v1.26.0
  • 配置: godotenv v1.5.1
  • 容器: Docker & Docker Compose
  • CI/CD: Jenkins Pipeline

🚀 快速开始

本地开发

  1. 克隆项目

    git clone <repository-url>
    cd golang_demo
    
  2. 安装依赖

    make deps
    
  3. 运行测试

    make test
    
  4. 开发模式运行

    make dev
    
  5. 访问应用

    http://localhost:8080
    

使用Docker

  1. 构建并运行

    make docker-run
    
  2. 查看日志

    make logs
    
  3. 停止容器

    make docker-stop
    

使用Docker Compose

docker-compose up -d

🔧 配置

项目使用环境变量进行配置,可以通过.env文件设置:

PORT=8080
GIN_MODE=debug

环境变量说明

  • PORT: 服务端口默认8080
  • GIN_MODE: Gin运行模式debug/release/test

📦 构建

本地构建

make build

Docker构建

make docker-build

构建时会注入以下信息:

  • 构建时间
  • Git提交哈希
  • 版本信息

🚀 部署

Jenkins Pipeline

项目包含完整的Jenkinsfile,支持:

  • 代码检出 - 自动获取Git提交信息和构建时间
  • 环境检查 - 验证Go、Docker等构建环境
  • 依赖管理 - 自动下载和验证Go模块依赖
  • 代码检查 - 运行go vetgo fmt检查
  • 单元测试 - 执行测试并生成覆盖率报告
  • 代码质量扫描 - SonarQube代码质量分析可选
  • 编译构建 - 交叉编译Linux二进制文件
  • Docker镜像构建 - 多阶段构建优化镜像
  • 镜像测试 - 验证Docker镜像功能正常
  • 自动部署 - 支持多环境部署(生产/测试)
  • 健康检查 - 验证部署后应用状态
  • 构建产物清理 - 自动清理临时文件和镜像

分支策略:

  • main/master分支部署到生产环境端口15020
  • develop/feature/*分支部署到测试环境端口15021

手动部署

  1. 构建镜像

    docker build -t golang-demo:latest .
    
  2. 运行容器

    docker run -d \
      --name golang-demo \
      -p 8080:8080 \
      -e GIN_MODE=release \
      golang-demo:latest
    
  3. 健康检查

    curl http://localhost:8080/health
    

🧪 测试

运行所有测试

make test

健康检查测试

make health

API测试示例

# 基础测试
curl http://localhost:8080/ping

# 健康检查
curl http://localhost:8080/health

# API测试
curl http://localhost:8080/api/v1/time

# POST请求测试
curl -X POST http://localhost:8080/api/v1/echo \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello World"}'

📖 开发指南

项目结构

golang_demo/
├── main.go              # 主程序文件
├── go.mod               # Go模块文件
├── go.sum               # 依赖锁定文件
├── .env                 # 环境变量配置
├── Dockerfile           # Docker构建文件
├── docker-compose.yml   # Docker Compose配置
├── Jenkinsfile          # Jenkins Pipeline配置
├── Makefile             # 构建脚本
└── README.md            # 项目说明

添加新的API端点

  1. setupRouter()函数中添加路由
  2. 实现对应的处理函数
  3. 更新API文档

自定义配置

修改.env文件或设置环境变量来自定义配置。

🤝 贡献

  1. Fork本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启Pull Request

📝 许可证

本项目采用MIT许可证 - 查看LICENSE文件了解详情。

🐛 问题报告

如果发现bug或有功能建议请在Issues页面报告。

Description
No description provided
Readme 217 KiB
Languages
Go 59.6%
Makefile 29.2%
Dockerfile 11.2%