欢迎为项目做贡献!本文档包含开发环境设置、代码规范和 GitHub Actions 使用说明。
- Node.js 20+
- npm
- Docker (可选)
npm install# 同时启动前端和后端
npm run dev
# 或单独启动
npm run dev:client # 前端 (Vite)
npm run dev:server # 后端 (Express)项目使用 ESLint 和 Prettier 保持代码质量。
# ESLint 检查
npm run lint
# 自动修复 ESLint 问题
npm run lint:fix
# 格式化代码
npm run format
# 检查代码格式
npm run format:check
# TypeScript 类型检查
npm run type-check建议在提交代码前运行:
npm run lint:fix && npm run format && npm run type-check# 构建生产版本
npm run build
# 预览生产构建
npm run preview项目配置了自动化工作流,在代码推送时自动构建和检查。
触发条件:
- 推送到
main或master分支 - 推送版本标签 (格式:
v*.*.*) - Pull Request
- 手动触发
功能:
- 自动构建多平台 Docker 镜像:
linux/amd64(x86_64)linux/arm64(ARM64)
- 推送到 GitHub Container Registry (ghcr.io)
- 支持构建缓存优化
触发条件:
- 推送到
main、master或develop分支 - Pull Request
检查项:
- ESLint 代码检查
- Prettier 格式检查
- TypeScript 类型检查
- 构建测试
# 拉取最新版本
docker pull ghcr.io/debbide/monitor:latest
# 运行容器
docker run -d \
--name uptime-monitor \
-p 3000:3000 \
-v ./data:/app/data \
--restart unless-stopped \
ghcr.io/debbide/monitor:latest如果要推送到 Docker Hub,需要在 GitHub 仓库设置中添加 Secrets:
-
创建 Docker Hub 访问令牌
- 登录 Docker Hub
- Account Settings → Security → New Access Token
- 复制生成的令牌
-
在 GitHub 添加 Secrets
- 仓库 Settings → Secrets and variables → Actions
- 添加
DOCKERHUB_USERNAME(Docker Hub 用户名) - 添加
DOCKERHUB_TOKEN(访问令牌)
| 触发方式 | 生成的标签 |
|---|---|
| 推送到 main | latest, main, main-{sha} |
| 推送标签 v1.2.3 | v1.2.3, v1.2, v1, latest |
| Pull Request | pr-{number} |
# 补丁版本 (1.0.0 -> 1.0.1)
npm version patch
# 次版本 (1.0.0 -> 1.1.0)
npm version minor
# 主版本 (1.0.0 -> 2.0.0)
npm version majorgit push origin main --tagsGitHub Actions 会自动:
- 构建多平台镜像
- 推送到 GitHub Container Registry
- 生成版本标签
- Fork 项目
- 创建特性分支
git checkout -b feature/AmazingFeature
- 提交更改
git commit -m 'feat: Add some AmazingFeature' - 推送到分支
git push origin feature/AmazingFeature
- 开启 Pull Request
使用语义化提交信息:
feat:新功能fix:修复 bugdocs:文档更新style:代码格式调整refactor:重构test:测试相关chore:构建/工具相关
示例:
feat: add webhook retry mechanism
fix: resolve monitor sorting issue
docs: update installation guide
确保你的代码:
- ✅ 通过所有 lint 检查
- ✅ 通过类型检查
- ✅ 符合项目代码风格
- ✅ 包含必要的注释
- ✅ 功能正常工作
uptime-monitor-docker/
├── src/ # 前端源代码
│ ├── components/ # React 组件
│ ├── lib/ # 工具函数和 API
│ ├── App.tsx # 主应用
│ └── main.tsx # 入口文件
├── server/ # 后端源代码
│ ├── index.ts # Express 服务器
│ ├── monitor.ts # 监控逻辑
│ ├── db.ts # 数据库操作
│ └── types.ts # 类型定义
├── dist/ # 构建输出
├── data/ # SQLite 数据库
├── .github/workflows/ # GitHub Actions 工作流
└── public/ # 静态资源
# 构建镜像
docker build -t uptime-monitor:dev .
# 运行容器
docker run -d -p 3000:3000 -v ./data:/app/data uptime-monitor:dev# 启动
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止
docker-compose down# 清理并重新安装
rm -rf node_modules package-lock.json
npm install# 运行类型检查查看详细错误
npm run type-check# 清理 Docker 缓存
docker system prune -a- 前端: React 18 + TypeScript + Vite
- 后端: Express + TypeScript + Node.js 20
- 数据库: SQLite (sql.js)
- 定时任务: node-cron
- 容器化: Docker + Docker Compose
- CI/CD: GitHub Actions
- 📝 提交 Issue
- 💬 参与 Discussions
- 📧 查看现有的 Pull Requests
感谢你的贡献!🎉