Skip to content

Commit 0fb8f5a

Browse files
committed
feat: Add github action workflow
--story=1
1 parent c7b5380 commit 0fb8f5a

28 files changed

+1751
-71
lines changed

.dockerignore

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Git
2+
.git
3+
.gitignore
4+
.github
5+
6+
# 构建产物
7+
bin/
8+
dist/
9+
*.exe
10+
codei18n
11+
*.test
12+
*.out
13+
14+
# 测试和覆盖率
15+
coverage.out
16+
coverage.html
17+
*.coverprofile
18+
19+
# IDE
20+
.idea/
21+
.vscode/
22+
*.swp
23+
*.swo
24+
*~
25+
26+
# 文档和规范
27+
docs/
28+
specs/
29+
*.md
30+
!README.md
31+
32+
# 配置和示例
33+
.codei18n/
34+
examples/
35+
36+
# 依赖
37+
vendor/
38+
39+
# 临时文件
40+
*.tmp
41+
*.log
42+
43+
# macOS
44+
.DS_Store
45+
46+
# Windows
47+
Thumbs.db
48+
49+
# 环境变量
50+
.env
51+
.env.*
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
name: Bug 报告
3+
about: 报告一个问题帮助我们改进
4+
title: '[BUG] '
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## 问题描述
10+
11+
简洁清晰地描述这个 bug。
12+
13+
## 重现步骤
14+
15+
1. 执行命令 '...'
16+
2. 使用参数 '....'
17+
3. 查看错误 '....'
18+
19+
## 预期行为
20+
21+
描述您期望发生的行为。
22+
23+
## 实际行为
24+
25+
描述实际发生的行为。
26+
27+
## 环境信息
28+
29+
- 操作系统:[例如:macOS 13.0, Ubuntu 22.04, Windows 11]
30+
- Go 版本:[运行 `go version` 的输出]
31+
- CodeI18n 版本:[运行 `codei18n --version` 或 git commit hash]
32+
33+
## 日志和截图
34+
35+
如果有的话,请添加相关的错误日志或截图。
36+
37+
```
38+
粘贴错误日志
39+
```
40+
41+
## 附加信息
42+
43+
其他任何有助于解决问题的信息。
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
name: 功能请求
3+
about: 建议一个新功能
4+
title: '[FEATURE] '
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## 功能描述
10+
11+
简洁清晰地描述您想要的功能。
12+
13+
## 使用场景
14+
15+
描述这个功能解决的问题或满足的需求。
16+
17+
**示例:** 作为一个开发者,我希望能够...,这样我就可以...
18+
19+
## 期望的解决方案
20+
21+
描述您期望的功能实现方式。
22+
23+
## 替代方案
24+
25+
描述您考虑过的其他替代方案。
26+
27+
## 附加信息
28+
29+
其他任何有助于理解这个功能请求的信息、截图或示例。
30+
31+
## 是否愿意贡献实现?
32+
33+
- [ ] 我愿意提交 PR 实现这个功能
34+
- [ ] 我可以帮助测试这个功能
35+
- [ ] 我只是提出建议

.github/README.md

Lines changed: 228 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,228 @@
1+
# GitHub Actions 工作流说明
2+
3+
本目录包含 CodeI18n 项目的 GitHub Actions 工作流配置。
4+
5+
## 工作流概览
6+
7+
### 1. CI 工作流 (`ci.yml`)
8+
9+
**触发条件**
10+
- Push 到 `main``master``develop` 分支
11+
- Pull Request 到上述分支
12+
13+
**包含的检查**
14+
15+
#### 代码质量检查 (lint)
16+
- Go mod 验证
17+
- gofmt 格式检查
18+
- go vet 静态分析
19+
- staticcheck 代码检查
20+
21+
#### 多平台构建 (build)
22+
- 测试平台:Ubuntu、macOS、Windows
23+
- Go 版本:1.25.5
24+
- 验证构建产物
25+
26+
#### 单元测试 (test)
27+
- 运行所有测试(带竞态检测)
28+
- 生成覆盖率报告
29+
- 验证覆盖率要求(≥60%)
30+
- 上传到 Codecov
31+
32+
#### 集成测试 (integration-test)
33+
- CLI 命令测试
34+
- 端到端功能验证
35+
36+
#### 安全扫描 (security)
37+
- gosec 安全扫描
38+
- govulncheck 漏洞检查
39+
40+
#### 依赖审计 (dependencies)
41+
- 检查过时的依赖
42+
- 验证依赖完整性
43+
44+
#### 许可证检查 (license)
45+
- 验证 LICENSE 文件存在
46+
47+
### 2. Release 工作流 (`release.yml`)
48+
49+
**触发条件**
50+
- 推送符合 `v*.*.*` 格式的 tag
51+
52+
**执行任务**
53+
54+
#### 构建多平台二进制文件
55+
- Linux (amd64, arm64)
56+
- macOS (amd64, arm64)
57+
- Windows (amd64, arm64)
58+
59+
#### 生成发布资源
60+
- 压缩包(.tar.gz 和 .zip)
61+
- SHA256 校验和
62+
- Release Notes
63+
64+
#### Docker 镜像(可选)
65+
- 多平台镜像构建
66+
- 推送到 Docker Hub
67+
68+
**示例**
69+
70+
```bash
71+
# 创建并推送 release tag
72+
git tag -a v0.1.0 -m "Release v0.1.0"
73+
git push origin v0.1.0
74+
75+
# GitHub Actions 将自动:
76+
# 1. 运行所有测试
77+
# 2. 构建多平台二进制文件
78+
# 3. 创建 GitHub Release
79+
# 4. 构建并推送 Docker 镜像
80+
```
81+
82+
### 3. 依赖更新工作流 (`dependency-update.yml`)
83+
84+
**触发条件**
85+
- 每周一 UTC 00:00 自动运行
86+
- 手动触发
87+
88+
**执行任务**
89+
- 更新所有 Go 依赖到最新版本
90+
- 运行 `go mod tidy`
91+
- 运行测试验证
92+
- 自动创建 Pull Request
93+
94+
## 使用说明
95+
96+
### 本地验证 CI
97+
98+
在推送代码前,可以在本地运行与 CI 相同的检查:
99+
100+
```bash
101+
# 运行所有 CI 检查
102+
make ci
103+
104+
# 或者分步运行
105+
make fmt # 格式化检查
106+
make vet # 静态分析
107+
make lint # 代码检查
108+
make test # 单元测试
109+
make coverage-check # 覆盖率检查
110+
```
111+
112+
### 查看 CI 状态
113+
114+
- 在 PR 页面查看所有检查的状态
115+
- 点击 "Details" 查看详细日志
116+
- 所有检查必须通过才能合并
117+
118+
### 发布新版本
119+
120+
1. 确保所有 CI 检查通过
121+
2. 更新 CHANGELOG.md
122+
3. 创建 tag:
123+
```bash
124+
git tag -a v0.1.0 -m "Release v0.1.0"
125+
git push origin v0.1.0
126+
```
127+
4. 等待 GitHub Actions 完成构建
128+
5. 检查 [Releases](https://github.com/studyzy/codei18n/releases) 页面
129+
130+
### Docker 镜像发布
131+
132+
如果需要发布 Docker 镜像,需要配置以下 secrets:
133+
134+
1. 进入仓库 Settings → Secrets and variables → Actions
135+
2. 添加以下 secrets:
136+
- `DOCKER_USERNAME`: Docker Hub 用户名
137+
- `DOCKER_PASSWORD`: Docker Hub 访问令牌
138+
139+
然后推送版本 tag 即可自动构建和推送镜像。
140+
141+
### Codecov 集成(可选)
142+
143+
如果需要 Codecov 集成:
144+
145+
1. 访问 https://codecov.io/
146+
2. 添加您的仓库
147+
3. 获取 CODECOV_TOKEN
148+
4. 在仓库 Settings → Secrets 中添加 `CODECOV_TOKEN`
149+
150+
## Issue 和 PR 模板
151+
152+
### Issue 模板
153+
154+
位于 `ISSUE_TEMPLATE/` 目录:
155+
156+
- `bug_report.md`: Bug 报告模板
157+
- `feature_request.md`: 功能请求模板
158+
159+
创建 Issue 时会自动显示模板选项。
160+
161+
### PR 模板
162+
163+
位于 `pull_request_template.md`,创建 PR 时自动加载。
164+
165+
包含:
166+
- 变更说明
167+
- 类型选择
168+
- 检查清单
169+
- 测试步骤
170+
171+
## 故障排查
172+
173+
### CI 失败常见原因
174+
175+
1. **格式化检查失败**
176+
```bash
177+
make fmt
178+
git add .
179+
git commit --amend
180+
```
181+
182+
2. **测试失败**
183+
```bash
184+
make test-verbose # 查看详细错误
185+
```
186+
187+
3. **覆盖率不足**
188+
```bash
189+
make coverage-html # 查看覆盖率详情
190+
```
191+
192+
4. **Lint 检查失败**
193+
```bash
194+
make lint # 查看具体问题
195+
```
196+
197+
### Docker 构建失败
198+
199+
```bash
200+
# 本地测试 Docker 构建
201+
make docker-build
202+
203+
# 查看构建日志
204+
docker build --no-cache -t codei18n:test .
205+
```
206+
207+
## 维护
208+
209+
### 更新工作流
210+
211+
修改 `.github/workflows/*.yml` 文件后:
212+
213+
1. 在本地测试相关命令
214+
2. 提交并推送到 feature 分支
215+
3. 创建 PR 并观察 CI 结果
216+
4. 合并后观察工作流执行
217+
218+
### 监控
219+
220+
- 定期检查 [Actions](https://github.com/studyzy/codei18n/actions) 页面
221+
- 关注失败的工作流
222+
- 及时修复问题
223+
224+
---
225+
226+
更多信息请参考:
227+
- [GitHub Actions 文档](https://docs.github.com/en/actions)
228+
- [项目贡献指南](../CONTRIBUTING.md)

0 commit comments

Comments
 (0)