跳到主要内容

介绍

iForge 是一个任务驱动的轻量级自托管 Git 服务平台,将项目管理与代码开发深度打通。

核心理念

大多数 Git 平台把「代码托管」和「项目管理」做成两个割裂的模块——你在 Jira 里管任务,在 GitHub/GitLab 里管代码,两者之间靠人工维护关联。

iForge 的核心设计理念是任务驱动开发——让项目管理和代码开发在同一个系统中协同工作,每一次代码变更都可追溯到业务需求:

需求 → 拆解为 Story → 关联 Git 分支 → 提交代码 → 创建 MR → 合并 → 任务自动完成

核心工作流

以下是一个典型的 iForge 开发流程:

┌─────────────────────────────────────────────────────────────────┐
│ 1. 产品经理在看板创建需求,拆解为 Story 和 Task │
│ ── TASK-12: 修复用户登录超时问题 │
│ │
│ 2. 开发者从任务卡片创建开发分支(自动绑定任务) │
│ └── task-12-fix-login-timeout │
│ │
│ 3. 正常提交代码,无需写任务编号 │
│ └── git commit -m "优化数据库查询" │
│ │
│ 4. 创建合并请求,自动关联任务 │
│ └── MR-45: 修复登录超时 → 关联 TASK-12 │
│ │
│ 5. 代码审查通过,合并后任务状态自动更新 │
│ └── TASK-12 状态:进行中 → 已完成 │
└─────────────────────────────────────────────────────────────────┘
核心差异

分支创建时已与任务绑定,提交代码无需在 commit message 中写任务编号,所有变更自动归入任务时间线。

四大核心特色

特色说明传统平台
🔗 分支即任务从任务卡片一键创建开发分支,任务与分支自动绑定手动创建分支,与任务系统脱节
📝 提交即记录正常提交即可,所有变更自动归入任务时间线,无需写任务编号需在 commit message 中手动引用任务编号
🔀 MR 即交付合并请求关联任务,合并后自动更新任务状态合并后需手动更新任务状态
📊 看板即全景在看板上拖拽任务,实时反映开发进度需要在多个系统间切换查看进度

核心能力

模块说明
任务-代码联动任务 ↔ 分支 ↔ 提交 ↔ MR 全链路关联,双向追溯
代码托管Git HTTP/SSH 协议、公开/私有仓库、分支保护、文件浏览、提交历史
敏捷项目管理Scrum 全链路:史诗 → 用户故事 → Sprint → 任务看板,AI 辅助拆解
协作Issue 追踪、合并请求(MR)、Wiki、评论系统、@提及通知、实时 WebSocket 推送
CI/CD内置 Pipeline/Job/Runner,.iforge-ci.yml 声明式流水线,Docker 沙箱隔离
认证与权限本地账户、LDAP、OIDC 单点登录、组织/团队、SSH 密钥、访问令牌
扩展插件系统、Webhook、镜像同步、Release 管理

安全特性

iForge 在安全方面进行了深度加固,对标世界级开源项目标准:

特性说明
Git 输入验证所有分支名、标签名、文件路径均经过严格校验,防止命令注入和路径遍历攻击
Docker 沙箱隔离CI/CD Job 容器默认禁用网络(--network=none),限制内存 2GB、CPU 2 核、进程数 256
Shell Executor 默认禁用生产环境默认使用 Docker Executor,防止在宿主机直接执行用户代码
仓库级并发锁所有 Git 写操作通过仓库级互斥锁保证并发安全
Runner 权限隔离外置 Runner 只能执行其有权限的仓库的 Job,支持全局/用户/仓库三级作用域
工作目录自动清理Job 执行完成后自动清理工作目录,防止磁盘空间耗尽
加密密钥安全生成使用数据库事务 + 行级锁防止并发竞态导致密钥不一致

技术栈

后端

  • 框架:Go + Fiber v2
  • 数据库:SQLite(默认)/ MySQL / PostgreSQL
  • Git 实现:go-git
  • 认证:JWT + Session Cookie

前端

  • 框架:Next.js 16 + React 19
  • UI 库:Chakra UI
  • 样式:Emotion + Framer Motion
  • 虚拟滚动:@tanstack/react-virtual

项目结构

iforge/
├── server/ # 后端服务(Go/Fiber)
│ ├── cmd/server/ # 服务入口
│ ├── internal/
│ │ ├── handler/ # HTTP 处理器
│ │ ├── service/ # 业务逻辑
│ │ ├── model/ # 数据模型
│ │ ├── middleware/ # 中间件
│ │ ├── router/ # 路由定义
│ │ ├── git/ # Git 操作封装(含输入验证、仓库锁)
│ │ └── container/ # 依赖注入容器
│ └── data/ # 数据目录(运行时生成)

├── web/ # 前端应用(Next.js 16)
│ └── src/
│ ├── app/ # Next.js 页面
│ ├── components/ # React 组件
│ ├── contexts/ # React Context(认证、WebSocket、i18n)
│ └── lib/ # 工具函数、API 客户端

├── docker-compose.yml # Docker 部署编排(支持 SQLite/MySQL/PostgreSQL)
└── .env.example # 环境变量示例

相关仓库

仓库说明
iforge主平台(server + web)
iforge-site官方文档站(Docusaurus)
iforge-runnerCI/CD 执行器(独立部署)
iforge-nginxNginx 反向代理配置(统一管理域名路由)

许可证

Apache License 2.0 + 附加条件 — 详见 LICENSE

  • ✅ 允许商业使用、二次开发、企业交付
  • ❌ 不得基于源码运营多租户 SaaS 服务
  • ❌ 不得移除控制台内的 LOGO 和版权信息

准备好了?前往 快速开始Docker 部署