GitBucketとは?

オンラインのソフトウェア開発支援プラットフォームとして確固たる地位を築いたGithubだが、有償のGithub Enterpriseや、Gitlabなどに代表されるオープンソースのGithubクローンを導入することで同様のサービスをイントラネット内に構築することもできる。

今回紹介するGitBucketは、前述のGitlabに代表されるオープンソースのGithubクローンの1つでScalaで実装されており、TomcatやJettyなどのサーブレットコンテナにデプロイするだけで動作するのが特徴だ。Gitlabなどと比べると後発であり、まだまだ開発途上のプロダクトではあるが、以下のように実際の利用にあたって必要な機能は一通り網羅されている。

  • Gitリポジトリ(httpアクセスのみ)
  • リポジトリビューア
  • イシュー
  • Wiki
  • フォーク
  • プルリクエスト

GitBucketのインストール

GitBucketのインストールは非常に簡単だ。例えばTomcatの場合(Servlet 3.0に対応している必要があるのでTomcat 7以降を使用する必要がある)、ダウンロードページからダウンロードした最新のwarファイルをTomcatのwebappディレクトリにコピーするだけでよい。

Tomcatを起動後、Webブラウザで「http://localhost:8080/gitbucket/」にアクセスすると、以下のような画面が表示されるはずだ。デフォルト状態ではユーザ名「root」、パスワード「root」で管理者としてログインできる。

図1 : 起動直後のGitBucket

なお、GitBucketは新しいバージョンがリリースされた場合、一度サーブレットコンテナを停止し、warファイルを差し替えるだけでアップグレードが可能だ。また、GitBucketのデータはサーブレットコンテナを起動したユーザのホームディレクトリ配下の「.gitbucket」というディレクトリに格納されている。データのバックアップはこのディレクトリを丸ごとコピーしておけばよい。

GitBucketの主な機能

GitBucketのユーザインタフェースは基本的にGithubに準じており、リポジトリビューア、イシュー、Wikiといった基本的な機能は、ほぼGithubと同じように利用できる。また、最新のバージョン1.5ではリポジトリのフォーク、プルリクエストも可能になっている。

図2 : リポジトリビューア

図3 : イシュー

図4 : Wiki

図5 : プルリクエストのマージ

リポジトリへのアクセスはhttpのみサポートしており、sshやgitプロトコルでアクセスすることはできない。また、プライベートリポジトリ(許可したユーザしか参照することができないリポジトリ)を作成することもできるほか、チームでリポジトリを使用する場合のための「グループ機能」がある。グループ用に作成したリポジトリは当該のグループに登録されているユーザであれば誰でも読み書きが行え、メンバーを一人一人リポジトリに登録する手間を省くことができる。

デフォルトではユーザ登録は管理者のみ行うことができるが、設定を変更することで訪問者が自由にユーザ登録を行えるようにすることもできる。また、LDAP認証にも対応しているほか、管理画面でSMTPサーバの設定を行うことでイシューの登録時などに関連するユーザに対しメール通知を行うことも可能だ。

図6 : 管理画面

ただし、リポジトリビューアで直接ファイルを編集することができない、プルリクエストやチェンジセットにコメントをつけることができない、ウォッチやスターといったソーシャル的な機能、Github PagesやGistといった周辺機能など、Githubと比べるとまだまだ実装されていない機能も多い。リビジョングラフや統計周りの機能についても今後の課題となっている。

また、Githubはレポーティングなど業務での利用に必要な機能が弱い面がある。GitBucketは基本的にはGithubと同等の機能を提供することを目標としているが、将来的にはプラグイン機構を導入し、こういった特定用途向けの機能をプラグインで拡張できるようになる見込みだ。

まとめ

GitBucketは細部に至るまでGithubそっくりのユーザインタフェースを備えているため、Githubを利用したことのあるユーザであればすぐに使用できるだろう。また、Gitlabといった他のGithubクローンと比べると手軽に導入でき、バージョンアップも容易という点も魅力だ。社内にGithubのようなコード共有のためのインフラを設置してみたいという場合にはぜひGitBucketを試してみて欲しい。