社内のソースコードの管理などに「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で発行したトークンを利用して、クローラを設定します。
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 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などの開発に従事。