GogsとGitLabの比較 | GitLab.JP

このページでは、GogsとGitLabを比較しています。それぞれの強みや不足部分を確認して、判断材料にしてください。

Gogs は Go で書かれた軽量の Git サーバーです。セットアップと操作が簡単にできるように設計されており、あらゆるプラットフォーム上で実行することができます。100% オープンソースで MIT OSS ライセンスが適用されており、セルフマネージド形式でのみ提供されます。Gogs は、リポジトリファイルの表示と編集、プロジェクトの課題トラッキング、プロジェクトのドキュメント用に組み込まれた Wiki を提供します。

FEATURES

統合されたCI/CD

GitLabにはCI/CD機能が統合されているので、CI/CDのために他のツールをインストールする必要はありません。GitLabのCI/CDを使用して、ウェブサイト(GitLab Pages)やウェブアプリケーションをビルド・テスト・デプロイできます。ジョブの結果はマージリクエストに表示され、簡単にアクセスできます。

CI/CDの詳細

より小さなメモリとより少ないCPUパワーで実行可能

512MBと小さなメモリでも快適に動作します。また、Goはコンパイラ型言語のため少ないCPUパワーしか消費しません

課題

複数の課題のステータスや担当者やマイルストーンを素早く一括で設定でき、設定した値で簡単に絞り込みができます。プロジェクトを横断して、マイルストーンや課題を表示できます。

課題管理の詳細

ラベル

ラベルを使用すると、 'バグ' , 'ドキュメント' といった説明的なタイトルに基づいて、問題、マージリクエスト、エピックを簡単に分類できます。

GitLabのラベルの詳細

マイルストーン

プロジェクトレベルやグループレベルの両方でマイルストーンを作成/管理したり、現在実施しているマイルストーンの全ての課題を表示して、アジャイルスプリントやリリースを表現します。

マイルストーンの詳細

課題の対応期限

GitLabでは個々の課題に対して期限日を設定できます。これは、特定の期限日までにしなければならない、複数の小さなタスクを管理するのに役立ちます。

期限日のドキュメント

他プロジェクトへの課題の移動

GitLabでは課題を別のプロジェクトへ移動できます。元の課題のすべてのリンク、履歴、コメントが移動先の課題にコピーされ、移動先の課題から元の課題を参照できます。これによって、複数のプロジェクトで課題を追跡するのが容易になります。

別のプロジェクトへ課題を移動の詳細

課題を重複としてマークする

課題を別の課題の重複としてマークし、その課題をクローズします。

重複した課題のマーク付けの詳細

Todos

ユーザーが課題やマージリクエストでメンションされたりアサインされると、そのユーザーの Todo List に表示されます。これにより開発ワークフローをより素早く簡単に追跡することができます。

Todoの詳細

プロジェクト課題ボード

GitLabには、課題のラベルをベースに課題をリストを表示する、課題ボードがあります。課題ボードは課題管理をよりユーザーフレンドリーな形で提供するものです。

GitLab課題ボードの詳細

作業時間の記録

GitLabでは課題とマージリクエストに作業時間の見積と実績を入力できます。

作業時間の記録の詳細

課題から新しいブランチを作成

GitLabでは、課題から素早く新しいブランチを作成できます。ブランチには課題の番号とタイトルが自動的に含まれるので、課題とブランチの紐付けを簡単にできます。

ドキュメントで詳細を確認

アプリケーションのパフォーマンス監視

Prometheusを利用して、GitLabはデプロイしたアプリケーションのパフォーマンスメトリクスを収集し表示できます。開発者はマージが本番環境に与える影響を、GitLabから離れることなく、簡単に確認できます。

デプロイしたアプリケーションの監視の詳細

アプリケーションのパフォーマンスに関するアラート

GitLab を使うと、エンジニアはソースコードを書くのと同じワークフローで、サービスレベルインジケータアラートをシームレスに作成し、必要なイベントを通知できます。

SLI アラートの作成についてさらに学んでください。

Value Stream Analytics

GitLabは計画からモニタリングまでに要した時間を計測するためのダッシュボードを提供します。GitLabには、アイディアを本番環境にデプロイするまでに必要なツールのすべてが組み込まれているので、このようなデータの提供が可能です。

Learn more about Value Stream Analytics

メールからマージリクエストを作成

マージリクエストのタイトル、説明、ソースのブランチ名を記載したメールを送信してマージリクエストを作成できます。あるいは、最初にブランチをプッシュせずにパッチファイルを用いてマージリクエストを作成します。

メールからマージリクエストを作成

統合されたコンテナレジストリ

GitLabコンテナレジストリは、Dockerイメージのセキュアでプライベートなレジストリです。GitLab CIから簡単にイメージのアップロードやダウンロードができます。コンテナレジストリはGitリポジトリ管理と完全に統合されています。(Codefresh will be ending their support for private docker registries as of May 1, 2020

コンテナレジストリのドキュメント

Review Appsで変更をプレビュー

GitLab CI/CDを利用して、ブランチごとに新しい環境を作成することができ、開発プロセスを高速化できます。 自分のブランチをプレビューできるマージリクエスト用の動的な環境を起動できます。Review Apps support both static and dynamic URLs.

Review Appsの詳細

Environments Auto-stop

This feature allows users to configure an optional expiration date which can be set for review app environments.

Learn more about Environments auto-stop

毎月、新機能を追加

毎月22日に、新機能の追加や多くの改善が適用されたGitLabの新しいバージョンがリリースされます。

1つの一体化したツール

一般的に多くのツールは、ソフトウェアの開発ライフサイクルを完成するために、複数のサードパーティツールを必要とします。一方Gitlabは、開発ライフサイクル全体をカバーできる完全に一体化したソリューションです。

AD/LDAP連携

他グループとの同期、SSHキーの管理、許可や認証の管理などが可能です。GitLabインスタンスのすべてをAD/LDAP連携によって管理できます

AD/LDAP連携の詳細

リモートリポジトリにプッシュミラーリング

ローカルサーバーから別サーバーのリポジトリにミラーリングができます。プッシュミラーリングは、パスワード認証を使用した HTTP/SSH、SSH での公開キー認証を使用してサポートされます。

リポジトリのプッシュミラーリングの詳細

リモートリポジトリのプルミラーリング

リモートの Git サーバからローカルサーバにリポジトリをミラーリングすることで、ローカルのフォークやレプリカを簡単に最新の状態に保つことができます。

リポジトリのプルミラーリングの詳細

ファイルのロック

複数人で同じファイルを使って作業をすることにはリスクが伴います。バイナリファイルで発生した衝突の解決には、 多大な労力が必要となります。 GitLab Enterprise Premiumでは、特定のファイルやディレクトリ全体をロックすることで、 自分以外がバイナリファイルを編集することを防止することができ、 面倒なバイナリファイルの衝突を回避することができます。

ファイルのロックの詳細

高可用性のサポート対応

ダウンタイムを回避するため、GitLab Enterprise Edition Premiumは高可用性をサポートしています。 サービスエンジニアがユーザそれぞれの高可用性に対するニーズを特定し、 綿密にアーキテクチャを設計します。

GitLabの高可用性の詳細

デプロイボード

GitLab Premium には Deploy ボードが付属しており、Kubernetes 上で実行している各 CI/CD 環境の現在の健全性とステータスを統合的に表示します。Kubernetesにアクセスすることなく、 最新デプロイのそれぞれのpodの稼働状況をGitLab内でシームレスに表示できます。

デプロイボードの詳細

マージリクエストがマージされると課題を自動的にクローズ

GitLabでは、特別なキーワードを使用して、マージリクエストがマージされたタイミングで複数の課題を自動的にクローズすることができます。

課題の自動クローズの詳細

仕掛中のマージリクエスト (WIP)

仕掛中のマージリクエストを間違えてマージすることができないように、マージリクエストを仕掛中(WIP)としてマークできます。これにより、仕掛中の変更であっても安心してレビューの依頼ができます。

WIPマージリクエストの詳細

Git LFS 2.0対応

音楽・動画・画像ファイルのような巨大ファイルを管理するのに、Git LFSは役に立ちます。 Git LFS 2.0では、ファイルのロック機能が追加され、チーム作業でのバイナリファイルの取り扱いが改善されました。 このファイルのロック機能は、GitLabに組み込まれているファイルのロック機能に統合されています。

GitLabでのGit LFS対応の詳細

Kubernetes podログの表示

生成されたログファイルにより、サーバ、アプリケーション、ネットワーク、セキュリティデバイスを監視し、エラーや問題を特定して分析します。GitLab では、接続された Kubernetes クラスタ内で実行中の Pod のログを簡単に見ることができる。GitLab でログを直接表示することで、開発者はコンソールツールを管理したり、別のインタフェイスにジャンプする必要がなくなります。

Kubernetes podログの表示の詳細

Leverage virtual package repositories to simplify package management workflows.

A virtual repository is a collection of local, remote and other virtual repositories accessed through a single logical URL.

GitLab Epic detailing the issues required to add this functionality.

Proxy remote package registries for safer, more reliable builds.

For many organizations, it is useful to have a caching proxy for frequently used upstream packages. In the case of CI/CD, the proxy is responsible for receiving a request and returning the upstream package from a registry, acting as a pull-through cache to speed up your pipelines.

依存性プロキシの詳細

Conan (C/C++) Repository

Conan は、開発者がネイティブバイナリを作成, 共有するためのオープンソースの分散型 C/C++ マルチプラットフォームパッケージです。

Documentation on the Conan Repository

Maven (Java) Repository

GitLab の Maven リポジトリにより、組織全体での Java ライブラリの公開と共有が簡単になり、依存関係が正しく管理されるようになります。認証と承認を含め、GitLab と完全に統合されています。

Maven リポジトリのドキュメント

NPM (node) Registry

GitLab の NPM リポジトリにより、組織全体で NPM パッケージを公開および共有しやすくなり、依存関係が正しく管理されるようになります。認証と承認を含め、GitLab と完全に統合されています。

NPM リポジトリに関するドキュメント

NuGet (.NET) Repository

GitLab's NuGet Repository allows C#/.NET developers to create, publish and share packages using the NuGet client or visual studio.

Documentation on the NuGet Repository

PyPI (Python) Repository

Python developers can set up GitLab as a remote PyPI repository and build, publish, and share packages using the PyPI client or GitLab CI/CD.

Check out the epic for additional details on implementation and timing

RPM (Linux) Repository

This planned feature will enable Linux developers to build, publish and share RPM packages alongside their source code and pipelines.

Check out the issue for additional details on implementation and timing

Debian (Linux) Repository

This planned feature will enable Linux developers to build, publish and share Debian packages alongside their source code and pipelines.

Check out the issue for additional details on implementation and timing

RubyGems (Ruby) Repository

This planned feature will enable Ruby developers to setup GitLab as a remote RubyGems repository and to build, publish and share packages using the command line or GitLab CI/CD. This will also be a valuable feature for GitLab and help with [dogfooding](https://about.gitlab.com/handbook/values/#dogfooding)

Check out the issue for additional details on implementation and timing

Go Repository

This planned feature will enable Go developers to build, publish and share their packages right alongside their source code and pipelines. This will also be a valuable feature for GitLab and help with [dogfooding](https://about.gitlab.com/handbook/values/#dogfooding)

Check out the issue for additional details on implementation and timing

Composer (PHP) Repository

This planned feature will enable PHP developers to build, publish and share their packages right alongside their source code and pipelines.

Check out the issue for additional details on implementation and timing

Use the Package Registry through REST API

Enables support for automation and integration of the GitLab Package Registry through a REST API.

Documentation on API

Git プロトコル v2 サポート

Git のワイヤプロトコルは、クライアントとサーバの間でクローン、フェッチ、プッシュがどのように通信されるかを定義します。Git プロトコル v2 は、フェッチコマンドのパフォーマンスを改善し、将来のプロトコル改善を可能にします。

Git プロトコル v2の詳細