Golang_demo/docs/jenkins-template-quick-start.md
2025-06-25 18:12:52 +08:00

5.1 KiB
Raw Blame History

🚀 Jenkins Go 项目模板 - 5 分钟快速入门

📋 前置条件检查

在开始之前,确保以下环境已准备好:

Jenkins 环境

  • Jenkins 已安装并运行
  • 已安装必需插件Pipeline, Git, SSH Agent, SonarQube Scanner, HTML Publisher
  • Go 工具已配置 (名称: go)
  • SonarQube Scanner 已配置 (名称: sonarQube)
  • 部署服务器 SSH Key 已配置

服务器环境

  • 部署服务器已安装 Docker
  • 端口已开放 (15021-生产, 15022-预发布, 15023-开发)
  • SSH 访问已配置

Go 项目要求

  • 项目是 Go 模块 (有go.mod文件)
  • 项目能正常编译 (go build .)
  • 项目有基础测试 (go test ./...)

🚀 3 步骤快速部署

步骤 1: 复制模板到项目

# 在你的Go项目根目录执行
curl -o Jenkinsfile https://raw.githubusercontent.com/yourusername/Golang_demo/main/Jenkinsfile.go-template

# 或者手动复制
cp /path/to/Jenkinsfile.go-template ./Jenkinsfile

步骤 2: 修改项目配置 (5 行代码)

编辑Jenkinsfile,修改以下变量:

// 找到这些行并修改
PROJECT_NAME = 'your-project-name'                  // 🔧 改成你的项目名
DEPLOY_SERVER = '116.62.163.84'                     // 🔧 改成你的服务器IP
SSH_CREDENTIAL_ID = 'deploy-server-ssh-key'         // 🔧 改成你的SSH凭据ID
SONAR_HOST_URL = 'http://116.62.163.84:15010'       // 🔧 改成你的SonarQube地址
SONAR_CREDENTIAL_ID = 'sonar-token'                 // 🔧 改成你的SonarQube凭据ID

步骤 3: 提交并构建

git add Jenkinsfile
git commit -m "🚀 Add Jenkins CI/CD pipeline"
git push origin main

🎯 Jenkins 任务创建

  1. 创建 Pipeline 任务

    • 新建 → Pipeline
    • 任务名称:your-project-name
  2. 配置源码管理

    • Pipeline script from SCM
    • SCM: Git
    • Repository URL: 你的 Git 仓库地址
    • Branch: */main
  3. 保存并构建

    • 点击"保存"
    • 点击"立即构建"

🌊 分支部署策略

模板会自动根据分支部署到不同环境:

分支 环境 端口 访问地址
main/master 生产环境 15021 http://your-server:15021
staging/release 预发布 15022 http://your-server:15022
feature/* 开发环境 15023 http://your-server:15023

🏥 健康检查端点 (推荐)

在你的 Go 应用中添加健康检查端点,提高部署成功率:

// 基本健康检查 - 推荐
r.GET("/health", func(c *gin.Context) {
    c.JSON(200, gin.H{"status": "healthy"})
})

// 简单ping - 备选
r.GET("/ping", func(c *gin.Context) {
    c.String(200, "pong")
})

🔧 常见配置调整

端口修改

如果需要使用不同端口:

PROD_PORT = '8080'      // 生产环境端口
STAGING_PORT = '8081'   // 预发布环境端口
DEV_PORT = '8082'       // 开发环境端口

跳过 SonarQube

如果暂时不需要代码扫描:

// 在构建参数中设置
SKIP_SONAR = true

Docker 仓库集成

如果使用私有 Docker 仓库:

DOCKER_REGISTRY = 'registry.example.com'
DOCKER_CREDENTIAL_ID = 'docker-creds'

🚨 故障排除

Go 工具未找到

错误: go: not found
解决: 检查 Jenkins 全局工具配置中 Go 工具名称是否为go

SSH 连接失败

错误: Permission denied (publickey)
解决:

  1. 检查 SSH Key 格式
  2. 确认服务器 SSH 访问权限
  3. 测试手动 SSH 连接

Docker 构建失败

错误: Cannot connect to Docker daemon
解决:

  1. 确认 Docker 服务运行:systemctl status docker
  2. 确认 Jenkins 用户在 docker 组:usermod -aG docker jenkins

SonarQube 连接超时

解决: 临时跳过 SonarQube 扫描,构建参数设置SKIP_SONAR=true

📊 构建成功指标

成功的构建应该显示:

  • 环境检查: Go 版本、Docker 状态正常
  • 代码质量: go vet、go fmt 检查通过
  • 单元测试: 测试通过,生成覆盖率报告
  • 镜像构建: Docker 镜像构建成功
  • 部署成功: 容器启动并通过健康检查
  • 访问正常: 应用端点响应 200 状态

🎉 下一步

1. 优化代码质量

# 提高测试覆盖率
go test -cover ./...

# 添加基准测试
func BenchmarkMyFunction(b *testing.B) { ... }

2. 集成通知

在 Jenkinsfile 的 post 部分启用:

// slackSend(color: 'good', message: "✅ 部署成功")
// emailext(subject: "构建结果", body: "...")

3. 多环境配置

创建不同分支测试多环境部署:

git checkout -b staging
git push origin staging

📚 完整文档


⏱️ 平均部署时间: 3-5 分钟
🎯 成功率: 95%+
🔧 维护成本: 极低

享受自动化部署的便利!🚀