onedev - 带有 CI/CD 和看板的自托管 Git 服务器

Created at: 2018-11-06 10:57:01
Language: Java
License: MIT

注意:我们 code.onedev.io 开发OneDev是为了狗粮。所有问题和拉取请求都应在那里提交

具有看板和 CI/CD 的自托管 Git 服务器

开箱即用的符号搜索和导航

当然,IDE擅长于这样做,但通常我们需要在旧提交中搜索(调查发布版本中的问题等),并且在IDE中切换提交可能会很麻烦而且很慢。

它的工作原理是使用ANTLR分析源代码,以增量方式提取符号以进行存储,快速且节省空间。现在支持Java,JavaScript,C,C++,CSharp,Go,PHP,Python,CSS,SCSS,LESS和R.GitHub几年前增加了这个功能,但似乎它仅适用于主分支,GitLab必须配置CI作业来生成和上传LSIF,这很麻烦,如果你每次提交这样做,可能会占用相当大的空间。

你还可以在查看提交或拉取请求时跳转到 diff 中的符号定义。

搜索符号

跳跃符号

使用正则表达式进行代码搜索

你可以切换到任何提交,并使用正则表达式搜索代码。引擎盖下的OneDev以增量方式与Lucene一起索引代码。在搜索时,将提取正则表达式中的文字三元组以进行粗略搜索,然后在结果中进行完全匹配。这使得正则表达式搜索速度非常快,即使对于像Linux这样的大型存储库也是如此。

正则表达式

使用静态分析结果注释源/差异,以便于代码审查

当然,这可以由GitHub上的许多第三方应用程序完成,但是它们在自己的应用程序上显示结果,这使得审查活动(例如在分析结果上添加注释)变得困难。更不用说你需要为这些服务付费。

注解

可自定义的问题状态和字段,具有深度 CI/CD 集成

GitHub/GitLab 问题的简单打开/关闭状态不适用于许多工作流。考虑客户提交的问题:

  1. 如果开发人员在提交代码时关闭了问题,客户将收到通知,并可能要求版本修复问题。
  2. 如果开发人员在发布时关闭了问题,QA 可能会对要测试的问题感到困惑,因为它们在测试时都保持打开状态。

对于可自定义的问题状态,我们可以通过四种状态来解决问题:打开、已提交、测试就绪和已发布:

  1. 提交代码后,自动发出到已提交状态的传输
  2. 创建并部署测试生成时,问题会自动传递到测试就绪状态。QA 将收到通知,并可以检查问题详细信息,以了解测试生成部署到哪个环境中。
  3. 测试通过并创建发布版本后,提交问题的客户将收到通知,他们可以检查问题详细信息以查看哪个版本包含修补程序。

板

固定-构建

通过电子邮件创建/讨论问题的服务台

服务台允许你的用户通过电子邮件提交票证,而无需拥有OneDev帐户。然后,可以在所需的项目中创建这些票证,并将其分配给团队中的相应成员。所有关于工单的进一步讨论都可以完全通过电子邮件进行,讨论内容作为评论发布到工单。当有任何工单活动时,用户还将收到通知,例如,创建或部署相关版本时

服务台.png

强大而直观的查询语言

再次感谢ANTLR,OneDev为项目,提交,问题,构建和拉取请求提供了复杂的查询语言,并具有直观的自动完成和提示。例如,它使我们的客户能够找到其运行版本和最新版本之间的固定问题,并使我们能够找到接触指定模块的人提交的所有提交,等等。

查询可以保存和订阅,这样你就不会错过任何感兴趣的东西。

查询

一个成熟的 CI/CD 引擎,无需编写 Yaml

OneDev 附带 GUI 以生成 CI/CD Yaml。无需谷歌搜索Yaml语法。用于启动 OneDev 服务器的单行 docker 命令,并且你具有自动的本地 CI/CD 运行程序。担心服务器运行大量作业的能力?另一个单行线用于从任何计算机连接自我更新代理。需要自动缩放 CI/CD 场?一个掌舵单行,用于将OneDev部署到k8s集群中。

构建管道,矩阵作业,类型化参数,参数链接,步骤模板,构建促销...太多整洁的功能来详细说明...

作业定义

运行作业

管道.gif

灵活的拉取请求审阅策略和审阅者建议

根据作者、分支和已更改的文件指定拉取请求审阅策略。OneDev 可以利用 git 更改历史记录为涉及某些文件的拉取请求建议最合适的审阅者。

审查政策

轻量级审查,无需拉取请求

对代码或差异的任何部分进行注释,以在不打开拉取请求的情况下启动轻量级审阅。通过代码修改甚至文件重命名来实时查看注释以用作文档。

每个讨论都是线程化的,以便你可以轻松地了解具有新评论/更新的讨论。

文件注释

线程注释

用于快速访问功能的命令面板

按 cmd/ctrl-k 从任意位置调出命令调色板。搜索项目、文件、问题、拉取请求、构建和各种设置,并在不离开键盘的情况下跳转到它们

命令面板.gif

用智能编辑器愉快地写下Markdown

在 GitHub/GitLab 的 Markdown 文件中嵌入图像时,你需要将图像上传到单独的页面中,然后找出引用该图像的相对路径。使用OneDev,你只需将图像上传到同一编辑器中的所需文件夹,链接将自动生成。

OneDev 在编辑窗口中跟踪光标,并根据需要滚动预览窗口,以便你始终可以预览正在键入的内容。

降价

SLOC 趋势:各语言

OneDev检查主分支的git历史,以有效地按语言计算代码源代码行的趋势。

统计

便于设置继承的项目层次结构

组织是公共服务的理想选择。但是,对于自托管内部使用,我们认为分层结构对于组织项目更实用。子项目可以从父项目继承设置,并且可以根据需要有选择地覆盖其中一些设置。这减少了管理公司中许多项目的大量开销。

快速可靠,资源使用适中

OneDev 经过精心设计,充分考虑了性能。使用2核2GB盒子,你将获得中型项目的所有功能。它已经被密集使用超过5年,具有经过实战验证的可靠性。修复错误是我们的首要任务,通常很少有已知的错误。


特别鸣谢

你的套件

YourKit通过提供其出色的Java分析器的免费开源许可证来支持此项目