Gogs vs GitLab

GitLab compared to other DevOps tools

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のラベルの詳細

マイルストーン

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

マイルストーンの詳細

Iterations

Create and manage iterations at the group level, view all the issues for the iteration you’re currently working on within your group or project, and enable all subgroups and projects to stay in sync on the same cadence.

Learn more about Iterations

課題の対応期限

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

期限日のドキュメント

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

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

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

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

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

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

Todos

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

Todoの詳細

プロジェクト課題ボード

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

GitLab課題ボードの詳細

作業時間の記録

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

作業時間の記録の詳細

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

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

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

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

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

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

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

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

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

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

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

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

バリューストリーム分析

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

バリューストリーム分析の詳細

Group Level Value Stream Analytics

GitLab provides a group dashboard that lets teams measure the time it takes to go from planning to monitoring. GitLab can provide this data because it has all the tools built-in: from the idea, to the CI, to code review, to deploy to production.

バリューストリーム分析の詳細

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

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

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

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

GitLab Container Registryは、Dockerイメージのためのセキュアでプライベートなレジストリです。 GitLab CIからイメージを簡単にアップロードしたりダウンロードしたりすることができます。 Gitリポジトリ管理と完全にインテグレーションされています。 (Codefresh社は2020年5月1日をもってプライベートなDockerレジストリのサポートを終了する予定です。)

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

レビューアプリで変更をプレビュー

GitLab CI/CDを利用して、ブランチごとに新しい環境を作成することができ、開発プロセスを高速化できます。自分のブランチをプレビューできるマージリクエスト用の動的な環境を起動できます。レビューアプリは静的・動的なURLの両方をサポートします。

レビューアプリの詳細

環境の自動停止

この機能では、Review App環境で設定できる任意の有効期限を設定することができます。

環境の自動停止の詳細

毎月、新機能を追加

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

1つの一体化したツール

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

AD/LDAP連携

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

AD/LDAP連携の詳細

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

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

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

ファイルのロック

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

ファイルのロックの詳細

拡張アーキテクチャのサポート

GitLab Premiumには、複数のノードにまたがるGitLabサービスの拡張機能が含まれており、冗長性を提供します。 GitLabはリファレンスアーキテクチャを提供しており、必要に応じて最適なアーキテクチャを簡単に決定することができます。

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ログの表示の詳細

仮想パッケージリポジトリを活用して、パッケージ管理ワークフローを簡素化します。

仮想リポジトリとは、単一の論理 URL を通じてアクセスされるローカル、リモート、その他の仮想リポジトリの集合体です。

GitLabのエピックで、この機能を追加するために必要な課題を詳細に説明しています。

より安全で信頼性の高いビルドのためのリモートパッケージレジストリをプロキシします。

多くの組織では、頻繁に利用しているアップストリームのイメージ/パッケージ用のキャッシュプロキシを使うのが便利です。CI/CD の場合は、プロキシはリクエストを受信し、レジストリからアップストリームのイメージを渡す責任があり、パイプラインを高速化するためのプルスルーキャッシュとして機能します。

依存性プロキシの詳細

Conan (C/C++) リポジトリ

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

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

Maven (Java) リポジトリ

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

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

NPM レジストリ

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

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

NuGet (.NET) リポジトリ

GitLabのNuGetリポジトリは、C#/.NETの開発者がNuGetクライアントやVisual Studioを使ってパッケージを作成、公開、共有することを可能にします。

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

PyPI (Python) リポジトリ

Python開発者はGitLabをリモートPyPIリポジトリとして設定し、PyPIクライアントやGitLab CI/CDを使ってパッケージをビルド、公開、共有することができます。

エピックで詳細を確認

RPM (Linux) リポジトリ

この計画中の機能により、Linux開発者は、ソースコードやパイプラインと一緒にRPMパッケージを構築、公開、共有することができます。

課題で詳細を確認

Debian (Linux) リポジトリ

この計画中の機能により、Linux 開発者はソースコードやパイプラインと一緒に Debian パッケージを構築、公開、共有できるようになります。

課題で詳細を確認

RubyGems (Ruby) リポジトリ

この計画中の機能は、Ruby開発者がGitLabをリモートのRubyGemsリポジトリとして設定し、コマンドラインやGitLab CI/CDを使ってパッケージをビルド、公開、共有できるようにするものです。 また、GitLab自体の開発にとっても貴重な機能であり、[dogfooding](https://about.gitlab.com/handbook/values/#dogfooding)にも役立ちます。

課題で詳細を確認

Go リポジトリ

この計画中の機能により、Go開発者はソースコードやパイプラインと一緒にパッケージを構築、公開、共有できるようになります。 これはGitLab自体の開発にとっても貴重な機能であり、[dogfooding](https://about.gitlab.com/handbook/values/#dogfooding)にも役立ちます。

課題で詳細を確認

Composer (PHP) リポジトリ

この計画中の機能により、PHP 開発者はソースコードやパイプラインと一緒にパッケージを構築、公開、共有することができるようになります。

課題で詳細を確認

REST APIでパッケージレジストリを使用する

REST API を使用して GitLab パッケージレジストリの自動化とインテグレーションをサポートします。

APIに関するドキュメント

Git プロトコル v2 サポート

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

Git プロトコル v2の詳細