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

216 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 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⃣: 复制模板到项目
```bash
# 在你的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`,修改以下变量:
```groovy
// 找到这些行并修改
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⃣: 提交并构建
```bash
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 应用中添加健康检查端点,提高部署成功率:
```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")
})
```
## 🔧 常见配置调整
### 端口修改
如果需要使用不同端口:
```groovy
PROD_PORT = '8080' // 生产环境端口
STAGING_PORT = '8081' // 预发布环境端口
DEV_PORT = '8082' // 开发环境端口
```
### 跳过 SonarQube
如果暂时不需要代码扫描:
```groovy
// 在构建参数中设置
SKIP_SONAR = true
```
### Docker 仓库集成
如果使用私有 Docker 仓库:
```groovy
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. 优化代码质量
```bash
# 提高测试覆盖率
go test -cover ./...
# 添加基准测试
func BenchmarkMyFunction(b *testing.B) { ... }
```
### 2. 集成通知
在 Jenkinsfile 的 post 部分启用:
```groovy
// slackSend(color: 'good', message: "✅ 部署成功")
// emailext(subject: "构建结果", body: "...")
```
### 3. 多环境配置
创建不同分支测试多环境部署:
```bash
git checkout -b staging
git push origin staging
```
## 📚 完整文档
- [详细使用指南](go-project-template-guide.md)
- [故障排除手册](go-project-template-guide.md#故障排除)
- [最佳实践](go-project-template-guide.md#最佳实践)
---
**⏱️ 平均部署时间**: 3-5 分钟
**🎯 成功率**: 95%+
**🔧 维护成本**: 极低
享受自动化部署的便利!🚀