國人自研開源項目,一款簡單易用的 GitLab 替代品

公衆號關注 “GitHubDaily”

設爲 “星標”,每天帶你逛 GitHub


今天跟大家介紹一個國人自研項目,可用做 GitLab 替代品。

PS:本文來自作者本人投稿

OneDev 是一個開源的一體化的 DevOps 平臺,目前項目在 GitHub 上有 3K 星:https://github.com/theonedev/onedev

做這個項目的初衷其實是想解決 Build,Issue 和 Code 之間的信息割裂問題的。比如說在一個測試版本發佈後,這個版本里包含那些需要測試的 Issue,或者某個 Issue 最早在那個版本里被解決,又或者比較任意兩個發行版本,得到所有源代碼的改動等等。要方便的整合這些信息,使用一體化的平臺很有必要。

當初也研究了 GitLab,但是覺得這家公司太過於利潤導向,特別熱衷於加新功能,而對已經存在的呼聲很高的問題卻經常視而不見,比如說代碼的多行註釋一直不支持,.gitlab-ci.yml 難以維護,runner 經常莫名其妙失敗等。而 GitHub 企業版又太貴,消費不起。況且它們在 Build,Issue 和 Code 的整合方面也不像想象中那麼順暢。

因爲一直做 Git 相關的開發工作,覺得做個簡化版的 GitHub/GitLab 的 Copy Cat 應該不是很難,而且公司內部使用,大家低頭不見擡頭見,不需要那些騷氣的社交功能如邀請,關注之類的,而是把精力放在直接提高生產力的功能上,比如代碼智能導航,Build 定義的圖形界面和智能提示,Pull Request 增量審查,對 Docker 和 Kubernetes 原生支持等等。

隨着用戶的持續反饋和迭代,OneDev 目前已經相當成熟和穩定,可以在很大程度上取代 GitLab,而且安裝維護簡單,資源佔用少,性能出色。具體文檔參見項目主頁。

好了,說了這麼多廢話,還是看看我們做了哪些特色功能吧。


原生支持 Docker 和 Kubernetes

內置持續集成引擎,可以直接在本機上用 Docker 跑 Build,也可以連接到 Kubernetes 集羣上進行大批量的 Build。

圖形化的 Build 定義界面

在使用 GitHub/GitLab 等其他工具定義 Build 行爲的時候,需要寫 Yaml 腳本,不可避免的要去了解複雜的 Build 定義規則。而在 OneDev 裏提供了圖形界面,並輔以自動提示,讓這個工作變得非常容易。而且日後在版本升級時,Build 定義也可以自動升級。

靈活的 Build 工作流定義

支持用變量控制 Build 行爲。對不同變量的組合分別進行 Build/Test。可以將不同的 Build 任務連接形成 Build Pipeline,並支持併發任務。

支持 Issue 狀態和字段自定義

按需要自定義 Issue 狀態和字段來滿足不同的應用場景。不同字段之間可以定義依賴關係,比如說可以指定某字段只有在另一個字段選取特定值的時候顯示。Issue 狀態可以設置基於規則的自動遷移,也可以設置基於權限的手動遷移。

自動刷新的 Issue 看板

根據 Issue 狀態或者字段來展示 Issue 看板。所有 Issue 相關操作都可以在看板中進行。看板即時自動刷新來展示 Issue 的最新狀態。

代碼智能搜索和導航

在查看源文件和 Diff 時,支持基於語法分析的代碼智能搜索和導航,並可以展示源碼的大綱結構方便閱讀。目前支持 Java,JavaScript,C,C++,CSharp,Go,PHP,Python,CSS,SCSS,LESS,R。

使用標註對代碼進行討論和閱讀

閱讀代碼時,隨時可以加上標註同作者進行討論。之後即使文件經過了修改或重命名,OneDev 依然能夠把合適的歷史標註顯示代碼旁幫助理解。

靈活的代碼審查規則

制定基於 Pull Request 的代碼審查規則。比如說可以規定某個分支的某些文件修改後需要通過哪些人的審查,或者哪些 Build 任務必須通過等等。

強大易用的查詢語言

系統包含有一個精心設計的查詢語言,通過自動提示和補齊,可以快速創建對 Issue,build,code,pull request 等對象的複雜查詢。查詢還可以按需保存和訂閱,以便在有滿足查詢條件的事件發生時,自動得到通知。

Code,Issue,Pull Request 和 Build 的深度集成

在代碼提交,Pull Request 創建 / 合併,或者 Build 成功後,可知配置相關的 Issue 自動轉移到所需狀態,並通知相關人員。隨時獲取交叉信息,比如某個 Build 裏包含那些完成的 Issue, 某個 Issue 最早在那個 Build 裏被解決,又或者比較任意兩個 Build,得到所有源代碼的改動等等

精細的權限控制

比如您可以定義哪些人可以改動關鍵源文件,哪些人可以分配 Issue,哪些人可以訪問測試版本,哪些人可以進行版本發佈等等。

---

由 GitHubDaily 原班人馬打造的公衆號:GitCube,現已正式上線!
接下來我們將會在該公衆號上,爲大家分享優質的計算機學習資源與開發者工具,堅持每天一篇原創文章的輸出,感興趣的小夥伴可以關注一下哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章