社内のソースコードの管理などに「GitBucket」を利用している企業もあると思います。 今回は、 Fess 13.6.1とGitBucket 4.33.0を利用してGitBucket上にあるデータを効率良く検索する方法を紹介します。

クロールするためのプラグインをそれぞれにインストールすることで、リポジトリ内のソースコード、Issue、Wikiを検索対象とすることが可能です。FessとGitBucketを連携させることによって、複数のリポジトリに含まれるさまざまなデータを高速に検索ができるようになります。

GitBucketの入手

まず、GitBucketの公式サイトからWARファイルをダウンロードし、以下のコマンドを実行して起動します。

$ java -jar gitbucket.war --port=8080 --prefix=gitbucket

すると、「http://localhost:8080/gitbucket/」でGitBucketにアクセスできるようになります。

次に、以下のコマンドを実行してFessを起動します。

$ ./bin/fess -Dfess.port=8081

これで、「http://localhost:8081/」でFessにアクセスできるようになります。

なお、FessとGitBucketはいずれもデフォルトのポート番号が8080に設定されているため、今回は衝突しないようにFessにはポート番号8081を指定して起動しています。

プラグインのインストール

続いて、FessとGitBucketにそれぞれのプラグインをインストールします。

まず、GitBucketにインストールするプラグインをMavenリポジトリから取得します。 今回は、「gitbucket-fess-plugin_2.13-1.5.0.jar」をダウンロードして、「$HOME/.gitbucket/plugins」に配置します。

次にFessのプラグインを以下の手順でインストールします。

  • 管理者としてログインし、「システム」>「プラグイン」で「インストール」をクリックして、プラグインのインストール画面を表示する
  • リモートタブで「fess-ds-gitbucket-13.6.2」を選択し、「インストール」をクリックする

プラグインの設定方法

リポジトリアクセス用のトークンの発行

FessがGitBucketのリポジトリにアクセスできるようにするために、GitBucketでアクセストークンを発行します。

GitBucketにログイン後、右上のユーザーアイコンから「Account Setting」を開きます。 GitBucketはデフォルトではrootユーザーでログインできます。 デフォルトのパスワードは「root」です。

次に、サイドバーから「Applications」を選択し、「Generate new token」でアクセストークンを発行します。

GitBucketのトークンを発行

クローラの設定と実行

GitBucketで発行したトークンを利用して、クローラを設定します。

Fessの管理画面にログインし、「クローラ」 > 「データストア」 > 「新規作成」を開きクロール設定を作成します。

設定が必要な項目は以下の3項目です。

  • 名前
  • ハンドラ名
  • パラメータ

「名前」には任意の文字列を入力し、「ハンドラ名」はGitBucketDataStoreを選択してください。また、「パラメータ」には以下のように入力します。

  • url=http://localhost:8080/gitbucket/
  • token=[GitBucketで発行したトークン]

その他の項目は、デフォルトのままにします。

クローラの設定

クロール設定の登録後、「システム」 > 「スケジューラ」と移動し、「Default Crawler」のジョブを開きます。 「今すぐ開始」をクリックして、クローラを開始し、ジョブの状態が「実行中」から「有効」になるまで待ちます。

クロールの完了後、Fessの検索画面を表示して、検索フォームから適当に検索してください。 クロールが正常にできている場合には、検索結果にGitBucket上のファイルが表示されます。

検索用のトークンの発行

GitBucketからFessの検索結果へアクセスするためのアクセストークンを作成します。Fessの管理画面にログインし、「システム」 > 「アクセストークン」 を開きます。

新規作成を押し、以下の設定でアクセストークンを作成します。

  • 名前: 任意
  • パーミッション: 空欄
  • パラメータ名: Permission

作成後、アクセストークンの詳細画面に作成したトークンが表示されます。

クローラの設定

Fessの情報の登録

次に、Fessで発行したアクセストークンをGitBucketに登録します。

管理者でGitBucketにログインし、「http://localhost:8080/gitbucket/fess/settings」にアクセスします。

Fessの情報の登録

「Fess URL」にFessの「http://localhost:8081/」を設定し、「Access Token」にはFessで発行したトークンを入力して「Apply changes」ボタンをクリックします。

「Access Token」の欄に「Optional」とあるように、Fessのアクセストークンの入力は必須ではありません。 ただしトークンを入力することで、各ユーザーは自分がアクセスできるプライベートリポジトリに対する検索もできるようになります。トークンを入力しなければ、パブリックリポジトリのみが検索対象になります。

以上で設定は完了です。 GitBucketのヘッダーにある「Global Search」から検索が行えるようになります。

以下はFessと連携したGitBucketの検索画面のスクリーンショットです。

検索画面

複数のリポジトリを対象に、「code」という文字列を含むソースコードを検索できていることがおわかりいただけると思います。

* * *

今回は、Fessの検索機能を活かして、GitBucket上のデータを検索する方法を紹介しました。 Gitリポジトリに加えて、IssueやWikiも効率良く検索できるようになるので、ぜひ利用してみてください。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。