onedev - CI/CD と Kanban を備えた自己ホスト型 Git サーバー

(Self-hosted Git Server with CI/CD and Kanban)

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

注:ドッグフーディングのために、code.onedev.io でOneDevを開発しています。すべての問題とプル リクエストは、そこに送信する必要があります。

Kanban と 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 はテスト時にすべての問題が未解決のままであるため、どの問題をテストすべきか混乱する可能性があります。 

カスタマイズ可能な課題の状態により、オープン、コミット済み、テスト準備完了、リリース済みの 4 つの状態で課題に対処できます。

  1. コードがコミットされると、Issue は自動的にコミットされた状態に遷移します
  2. テスト ビルドが作成されてデプロイされると、課題は自動的にテスト準備完了状態に遷移します。QA に通知され、問題の詳細を確認して、テスト ビルドがデプロイされた環境を確認できます。
  3. テストに合格し、リリース ビルドが作成されると、問題を提出した顧客に通知され、問題の詳細を確認して、どのリリースに修正が含まれているかを確認できます。

ボード

固定ビルド

メールで問題を作成/議論するためのサービスデスク

サービス デスクを使用すると、ユーザーは OneDev アカウントを持っていなくても、メールでチケットを送信できます。これらのチケットは、目的のプロジェクトで作成し、チームの適切なメンバーに割り当てることができます。チケットに関するその後のすべての議論は、電子メールで完全に行うことができ、議論の内容はコメントとしてチケットに投稿されます。ユーザーは、関連するリリースが作成または展開されたときなど、チケット アクティビティがあるときにも通知を受け取ります。

service-desk.png

強力で直感的なクエリ言語

ANTLR のおかげで、OneDev はプロジェクト、コミット、イシュー、ビルド、プル リクエスト用の洗練されたクエリ言語を、直感的なオートコンプリートとヒントとともに提供しています。たとえば、お客様が実行中のリリースと最新のリリースの間で修正された問題を見つけたり、特定のモジュールに触れている誰かによって送信されたすべてのコミットを見つけたりすることができます。 

クエリを保存して購読できるので、興味のあるものを見逃すことはありません。

クエリ

Yaml を書かない本格的な CI/CD エンジン

OneDev には、CI/CD Yaml を生成するための GUI が付属しています。Yaml 文法をググる必要はありません。OneDev サーバーを起動するワンライナー docker コマンドで、ローカルの CI/CD ランナーが自動的に作成されます。大量のジョブを実行するサーバー機能について懸念がありますか? 任意のマシンから自己更新エージェントを接続するための別のワンライナー。CI/CD ファームの自動スケーリングが必要ですか? OneDev を k8s クラスターにデプロイするための Helm ワンライナー。 

ビルド パイプライン、マトリックス ジョブ、型指定されたパラメーター、パラメーター チェーン、ステップ テンプレート、ビルド プロモーション… 精巧な機能が多すぎる…

ジョブ定義

ジョブ実行

パイプライン.gif

柔軟なプル リクエスト レビュー ポリシーとレビュアーの提案

作成者、ブランチ、および変更されたファイルに基づいてプル リクエストのレビュー ポリシーを指定します。OneDev は git の変更履歴を利用して、特定のファイルに触れるプル リクエストに最適なレビュアーを提案できます。

レビューポリシー

プルリクエストなしの軽量レビュー

コードまたは diff の任意の部分にコメントして、プル リクエストを開かずに軽量レビューを開始します。コメントをライブで確認して、コードを変更したり、ファイルの名前を変更してドキュメントとして使用したりできます。 

各ディスカッションはスレッド化されているため、新しいコメント/更新でディスカッションを簡単に知ることができます。

ファイルコメント

スレッドコメント

機能にすばやくアクセスするためのコマンド パレット

cmd/ctrl-k を押して、どこからでもコマンド パレットを表示します。プロジェクト、ファイル、Issue、プル リクエスト、ビルド、およびさまざまな設定を検索し、キーボードを離れることなくそれらにジャンプします

command-palette.gif

スマートエディターで Markdown を快適に書く

GitHub/GitLab のマークダウン ファイルに画像を埋め込む場合は、別のページに画像をアップロードしてから、その画像を参照するための相対パスを把握する必要があります。OneDev では、同じエディターで目的のフォルダーに画像をアップロードするだけで、リンクが自動的に生成されます。 

OneDev は編集ウィンドウでカーソルを追跡し、必要に応じてプレビュー ウィンドウをスクロールして、入力内容をいつでもプレビューできるようにします。

マークダウン

言語別 SLOC トレンド

OneDev はメイン ブランチの git 履歴を調べて、言語別のコードのソース行の傾向を効率的に計算します。

統計

設定の継承を容易にするプロジェクト階層

組織は公共サービスに最適です。ただし、自己ホスト型の内部使用の場合、プロジェクトを編成するには階層構造がより実用的であると感じています。子プロジェクトは親プロジェクトから設定を継承でき、必要に応じてそれらの一部を選択的にオーバーライドできます。これにより、社内の多くのプロジェクトを管理するためのオーバーヘッドが大幅に削減されます。

中程度のリソース使用率で高速かつ信頼性が高い

OneDev は、パフォーマンスを考慮して慎重に設計されています。2 コアの 2GB ボックスを使用すると、中規模のプロジェクトで上記のすべての機能を利用できます。戦闘で証明された信頼性で、5 年以上にわたって集中的に使用されてきました。バグの修正は私たちの最優先事項であり、通常、実際に既知のバグはほとんどまたはまったくありません。


特別な感謝

あなたのキット

YourKitは、優れた Java プロファイラーの無料のオープン ソース ライセンスを提供することで、このプロジェクトをサポートしています。