11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FessでJIRA/Confluenceを高速に横断検索する

Last updated at Posted at 2018-08-17

この記事では、全文検索サーバー Fessを利用してJIRAの課題(issue)やConfluenceのwikiコンテンツ等を横断検索する方法を紹介します。

これはFess上で実際にissueの検索を行っている画面のスクリーンショットです。

JIRA/Confluenceとは?

JIRAはAtlassian社が開発したソフトウェアで、課題管理、進捗管理、スケジュール管理など、プロジェクト全般を広く管理することができます。
Confluenceは同じくAtlassian社のソフトウェアで、JIRAと連携して、wikiで情報共有を行うことができます。

導入手順

FessでJIRA/Confluenceを横断検索するための手順を説明します。

導入の流れは次のようになります。

  1. プラグイン追加
  2. Fessの起動
  3. 認証設定
  4. クローラの設定・実行

1. プラグイン追加

Fessの現バージョン(12.2.0)には、デフォルトでは含まれていない機能であるため、自分で追加する必要があります。

ここからfess-ds-atlassian-12.2.0.jarをダウンロードします。
ダウンロードしたjarファイルは[Fessのパス]/app/WEB-INF/lib/に配置します。

2. Fessの起動

このページを参考にFessを起動します。

JIRAのサーバー版を利用している場合、デフォルトではhttp://localhost:8080/で起動します。
Fessもデフォルトではhttp://localhost:8080/で起動するため、そのままでは衝突してしまいます。
衝突を避けるには、例えばFessを起動する際、

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

というような感じで、ポート番号を指定すればよいです。

3. 認証設定

データを取得するために認証情報をパラメータとして与える必要があり、そのための設定を行います。
認証方法としてはBasic認証またはOAuthを利用します。

3A. Basic認証の場合

利用しているAtlassian製品のアカウントのユーザー名とパスワードをパラメータとして与えます。
ここでは、特にJIRA/Confluence側で設定することはありません。

3B. OAuthの場合

Atlassian製品のOAuthについてはこのページ通りに行います。
認証情報として必要になるのは、config.properties内の「secret」「jira_home」「consumer_key」「private_key」「access_token」です。
このチュートリアルにはJIRAのOAuthについて掲載されていますが、Confluenceでも同様の方法で認証することが出来ます。

以下、やる事だけを簡単にまとめました。

3B-1. RSA鍵生成

openssl genrsa -out jira_privatekey.pem 1024
openssl req -newkey rsa:1024 -x509 -key jira_privatekey.pem -out jira_publickey.cer -days 365
openssl pkcs8 -topk8 -nocrypt -in jira_privatekey.pem -out jira_privatekey.pcks8
openssl x509 -pubkey -noout -in jira_publickey.cer  > jira_publickey.pem

3B-2. OAuthTutorialClientの設定

hg clone https://bitbucket.org/atlassian_tutorial/atlassian-oauth-examples
cd atlassian-oauth-examples/java
mvn clean compile assembly:single
cd target
java -jar OAuthTutorialClient-1.0.jar requestToken

最後のコマンドではエラーが出ますが、config.propertiesを生成しているだけなので気にしなくて大丈夫です。
生成されたtarget内のconfig.propertiesは次の様に設定します。

jira_home=http\://localhost\:8080
consumer_key=OauthKey
private_key=MIICdw...AQE\=

jira_homeはJIRAのURL、
consumer_keyはそのままOauthKey
private_keyjira_privatekey.pcks8の中身から改行を削除したもの
に設定します。
若干エスケープが必要な文字があるので注意してください。

3B-3. JIRA/Confluence側の設定

アプリケーションリンクの設定(/plugins/servlet/applinks/listApplicationLinks)を開きます。
「リンクするアプリ〜」に適当なURL(例: http://example.com/)を入力して、新しいリンクを作成します。「入力したURLから応答がありません。」と言われますが続行します。

Link applicationsダイアログで必要事項を適当に入力して続行します。

必要事項を入力して続行します。
コンシューマーキーはconfig.propertiesと同じOauthKeyにします。
公開鍵はjira_publickey.pemの中身を貼り付けます。

3B-4. OAuth Dance

java -jar OAuthTutorialClient-1.0.jar requestToken

これを実行すると次のように出力されます。

Token:			xe8yADzgduOc1GwbLcKUQbyAbKlPhVTv
Token secret:	lGk0heoiVWKgyEVM1R5ANTJVfKMkKuiS
Retrieve request token. Go to http://localhost:8080/plugins/servlet/oauth/authorize?oauth_token=xe8yADzgduOc1GwbLcKUQbyAbKlPhVTv to authorize it.

指定されたURLを開き、「許可」すると、確認コードが表示されます。
確認コードを利用してアクセストークンを取得します。

java -jar OAuthTutorialClient-1.0.jar accessToken cEzTBX

これでJIRA/Confluence側のOAuthの設定が完了します。

4. クローラの設定・実行

JIRA/Confluenceをクロールするための設定をします。
公式ドキュメントのこのページも参考にしてください。

4-1. クローラの設定

Fessの管理画面を開き、クローラ > データストアと移動し、新規作成をします。
新規作成画面では、

  • 名前
  • ハンドラ
  • パラメータ
  • スクリプト

の4項目を設定して、作成を完了します。

「名前」には好きな文字列を入力してください。
「ハンドラ」はJiraDataStore(ConfluenceDataStore)を選択してください。
「パラメータ」は次のようなフォーマットで入力してください。

home=http://localhost:8080
oauth.consumer_key=OauthKey
oauth.private_key=MIICdw...QE=
oauth.secret=cEzTBX
oauth.access_token=W1jjOV...ye

キーと値の説明は次のようになります。

キー
home JIRA/ConfluenceのURL
oauth.consumer_key コンシューマーキー (OAuth)
oauth.private_key 秘密鍵 (OAuth)
oauth.secret 認証キー (OAuth)
oauth.access_token アクセストークン (OAuth)
basicauth.username ユーザ名 (Basic認証)
basicauth.password パスワード (Basic認証)
issue.jql JQL (JIRAのみ) (任意)

oauth.*については、config.propertiesの中身と対応しています。
また、この例ではOAuthを利用していますが、Basic認証またはOAuthのどちらかの認証情報が必要です。

「スクリプト」はJIRAとConfluenceで異なります。

JIRA

url=issue.view_url
title=issue.summary
content=issue.description + issue.comments
last_modified=issue.last_modified

取得出来る値のキーと値の説明は次のようになります。

キー
issue.view_url issueを閲覧するURL
issue.summary issueの要約
issue.description issueの説明
issue.comments issueのコメント
issue.last_modified issueの最終更新日時

Confluence

url=contentview_url
title=content.title
content=content.body + content.comments
last_modified=content.last_modified
キー
content.view_url ページを閲覧するURL
content.title ページのタイトル
content.body ページの中身
content.comments ページのコメント
content.last_modified ページの最終更新日時

設定画面はこんな感じになります。

4-2. ジョブスケジューラの作成

4-1で作成したクロールをクリックすると、クロール設定が開き、そこから「新しいジョブの作成」をします。

後からでも変更はできるので、とりあえず試す場合はそのままの設定で大丈夫です。
詳しいジョブスケジューラの設定については、このページを参考にしてください。

4-3. クローラの実行

システム > スケジューラと移動し、4-2で作成したジョブを開きます。
その画面から、「今すぐ開始」をします。

状態が「実行中」から「有効」になるまで待ちます。

4-4. 検索のテスト

左上の検索フォームから適当に検索してみます。

これでFessでJIRA/Confluenceを横断検索することが出来るようになりました。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?