技术解析

OneDev 4.4 - 完全开源的 GitLab 竞品 - 加入了 RESTful API
0
2021-06-01 14:56:26
idczone

API 文档: https://code.onedev.io/help/api

项目是完全开源的: https://github.com/theon国外服务器edev/onedev

经常有人问我跟 GitLab 对比怎样:我想说的是 GitLab 需要养活几百人,做了很多对大多数开发团队并不常用的功能。而 OneDev 力求将一些最常用的功能做到最好,比如代码浏览时的符号导航,CI/CD 的图形化编辑(后台也是存为 yaml 文件),状态 /字段可定制的工单系统,看工单时,可以直接知道在那个版本被 Fix,以及看某个版本时,直接看到所有完成的工单等等。

项目是全 Java 的,也有同学说用的技术不够酷,不够云原生。其实用什么技术无所谓,关键是看产品本身是否好用。


GitLab 太重量级了,需要一个小巧且好部署的类似服务,之前用 Gogs 和 Gitea 都还行 ,不知道 OneDev 对硬件配置要求怎么样。

有无 OKR 类似的东西?

感觉 UI 设计得很好看,但习惯了 github 的版面风格,总得觉得有点不跟手

还不错,有竞争也是好事,这种东西最重要的是稳定性及后期服务,观察一段时间先

Gogs 和 Gitea 那个好一点?

Gitlab 的 Issue 和 Wiki 功能对于国内的项目管理模式还是比较简陋。

看起来不错

有点 kanban 的意思

Gogs 已经不更新了,最新的版本 0.12.3 是 2020/10/08 发布的,而且 Gogs 移动端上显示异常,现在轻量级的 Git 服务直接用 Gitea 就行了,移动端还算能用。

有新的代码托管解决方案是好事,但用 Java 去实现这样一套系统,并不讨好,行业趋势都是用逐步用 Golang 实现一些功能和组件,架构上目前没有发现可以大规模横向扩展的方案,这个方向可以研究一下,还有各种权限增强,功能补全,如 Git LFS,等等等,要做好投入还挺大的。

gitlab 最大的问题是 ruby

支持下,这个之前用过也自己编译过一个.很奇怪,现在反 java 是时尚么.........

资源占用还好,用阿里云的 1 核 2G 内存的机器就可以跑起来。

OneDev 的工单可定制性是一个特色。看板可以按照任意自己定制的字段来组织,比如按模块,工单状态或者分配的人等等,后续这块还会继续增强。

选择 Java 的一个主要原因是因为有太多成熟类库可以使用了,比如 OneDev 使用 Lucene 对 Git 仓库进行索引,使用 ANTLR 对各种语言进行语法分析。对于这种有着大量复杂逻辑而网络性能不是主要考量的系统,使用 golang 的优势并不明显。
目前并没有考虑大规模横向扩展,毕竟 OneDev 的定位不是做云服务。对于公司内部使用,一个不错的机器已经足够应付了。另外权限的管理也是 OneDev 比其他类似系统强的地方,比如说你可以定义工单的哪些字段哪些人可以操作,哪些类型的构建(持续构建版本,测试版本,上线或者发行版本等)哪些人可以操作和看到,哪些人可以操作代码哪些代码分支等等。
GitLFS 如果呼声比较高,在后续的版本会考虑加入。

做汉化么

有这个计划。

请问目前支持 gpg 签名么

目前没有,请关注这个 issue:
https://code.onedev.io/projects/onedev-server/issues/289

好奇心问一下你这前端在 Java 中我第一次见,用到什么技术,什么原理?

http://wicket.apache.org. 是个服务端组件框架,类似于 JSF 。

感觉很牛皮,但是好像很少人用,资料也不多,请问为什么选择这种技术栈呢?


> gitlab 最大的问题是 ruby
gitlab 的优势就是 Ruby


> GitLab 太重量级了,需要一个小巧且好部署的类似服务,之前用 Gogs 和 Gitea 都还行 ,不知道 OneDev 对硬件配置要求怎么样。

gogs 这种就只有 git 存储,用 coding github 类的不香吗

前后端语言一致,优秀的 IDE 支持,成熟稳定。把精力可以完全放在业务逻辑上,不用跟风纷繁复杂的 JavaScript 世界。只要不是做那种世界级云服务,性能完全不是问题。


自建其中原因就是为了加速 Github 上项目的访问,并且进行存档,防止因 DMCA 等原因项目被删除。
coding 之类的有一部分原因是信不过,而且自建已经能满足我的需要了。

好看 看起来也实用.
但是我觉得大家推荐 go 的另一个原因是没有 jvm 庞大的开销, 我现在碰到 java 的项目都会尽可能找 go 的替代, 原因就是轻快.

这要做什么,对于 git 及 CI 服务这种相对比较耗资源的系统,JVM 本身的开销其实不算什么了。一个 2G 内存的 Linux 就足够应付个人项目了。而且对于比较复杂的系统,go 的成熟类库也比较少,语法也相对不够强大。使用什么工具还是要看具体场景,不能一概而论。

自建 gitlab 不香吗

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服