@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

Elasticsearch-extended-analyzeを公開?

どーも。以前の記事で開発中としていたプラグインですが、とりあえず、pluginコマンドでインストール出来る形にしてみました。

インストールなどについては、READMEに記載したのでそちらを参照してもらうことにして、試行錯誤した話をメモとして残しておきます。

プラグインの開発はしいてたのですが、やっぱりpluginコマンドでインストール出来ないと使ってもらえないよなということで、勉強会も終わったのでちょっと調べてました。

プラグインコマンド

コマンドが用意されてますが、実態はJavaで実装されてて、通常はこんなかんじでプラグインをインストールします。

1
./bin/plugin -i elasticsearch/elasticsearch-analysis-kuromoji/1.6.0

この「elasticsearch/elasticsearch-analysis-kuromoji/1.6.0」という文字列ですが、「ユーザ名/リポジトリ名/バージョン」という意味になります。

で、ダウンロードするURLは以下のものの中から選ばれます。

  • elasticsearch.orgのダウンロード用サイト
  • search.maven.org
  • oss.sonatype.org
  • Githubのarchive

これらのサイトに先ほどのユーザ名、リポジトリ名、バージョンを利用したURLを組み立てて、ダウンロードしてくれるという仕組みになっています。

elasticsearch.orgについては、本家の人しかアップロードできないと思うので、なし。
maven、sonatypeについては、Mavenのリポジトリにリリースする必要があるんじゃないかなと。 で、昔調べてググって途中で挫折したんですが、挫折してます。手順が結構手間で。。。 (参考記事:【最新版】Maven Central Repository へのライブラリ登録方法 #maven

ということで、Githubにアップしたらなんとかなるんじゃん?ということで色々と調査して試してみました。(結果はイマイチなんですが。。。)

その1:mvn release:prepare

せっかくGithubだし、せっかくMavenなんだしなんか、pom.xmlに便利な設定したらコマンド一発でリリースできるんじゃない?という甘い気持ちで調査したググったらそれっぽい記事が見つかりました。 「MavenとGitHubの連携」って記事です。
で、pom.xmlの設定にも他のプラグインを真似してコピペしたものに<scm>ってタグがあったなぁと。このコマンドでついでにGithubにアップロードできるんじゃないの?ということで、試してみました。

1
mvn release:prepare

このコマンドを叩くと、記事にあるとおりにいくつか質問をされます。 タグについては、プロジェクト名-バージョン番号という文字列がデフォルトだと指定されているので、v0.5と変更して実施してみると、Githubのreleaseにv0.5ってのができてるじゃないですか。
pluginコマンドはGithubを見に行く時に次のファイルをダウンロードしに行きます。

1
https://github.com/ユーザ名/リポジトリ名/archive/vバージョン名.zip

やった!と思い、早速pluginコマンドを実行してみましたが、エラーが出ました。。。

1
2
3
4
5
6
7
8
9
Trying https://github.com/johtani/elasticsearch-extended-analyze/archive/v0.5.zip...
Downloading ...DONE
Installed johtani/elasticsearch-extended-analyze/0.5 into /Users/johtani/projects/tmp/ess_env/second_node/elasticsearch-0.90.7/plugins/extended-analyze
Usage:
    -u, --url     [plugin location]   : Set exact URL to download the plugin from
...省略...

Message:
   Error while installing plugin, reason: IllegalArgumentException: Plugin installation assumed to be site plugin, but contains source code, aborting installation.

あらら、なんで?と。
で、実際にgithubにアップされてたzipファイルをダウンロードしてみたら、githubのリポジトリにあるディレクトリ構成がそのまま入ってるじゃないですか。。。 そうですか、そうですよね。prepareだし、タグ打ってzipにかためてくれるだけなんですねと。。。

おそらく、siteプラグインだけの場合はこの方法でpluginコマンド叩けばOKなんでしょうが、私がダウンロードしてもらいたいのは.jarファイルが入ったzipファイルなんです。

ということで、断念しました。(タグ消したりをgitコマンドで叩いて綺麗にし直すとか虚しい作業をしてました)

その2:github.comのWebでリリース

おとなしく、Sonatypeのサイトにアップロードする方向でがんばればいいんですが、とりあえず使えるようにするのが先だと思い、 github.comのページでアップロードしてしまおうと。

「release」というタブをクリックすると、画面からアップロードできるようになります。
zipファイルを作ってアップロードしました。(zipファイル自体はmvn packageコマンドを実行したらtarget/releaseというディレクトリに作成されてる)

これで行けるだろということで、またpluginコマンドを実行すると

1
2
3
4
5
6
7
8
9
Trying https://github.com/johtani/elasticsearch-extended-analyze/archive/v0.5.zip...
Downloading ...DONE
Installed johtani/elasticsearch-extended-analyze/0.5 into /Users/johtani/projects/tmp/ess_env/second_node/elasticsearch-0.90.7/plugins/extended-analyze
Usage:
    -u, --url     [plugin location]   : Set exact URL to download the plugin from
...省略...

Message:
   Error while installing plugin, reason: IllegalArgumentException: Plugin installation assumed to be site plugin, but contains source code, aborting installation.

あれ?同じエラー?なんで?jar入りのzipファイルアップロードしたのに???

と。で、https://github.com/johtani/elasticsearch-extended-analyze/releasesにreleaseのページができてたので見てみると、あら。 アップロードしたファイルについては次のようなURLになってるじゃないですか。

1
https://github.com/johtani/elasticsearch-extended-analyze/releases/download/v0.5/v0.5.zip

で、よく見ると「Source code(zip)」というボタンもあるぞ?このリンクは?

1
https://github.com/johtani/elasticsearch-extended-analyze/archive/v0.5.zip

。。。あぁ。そうですか。そういうことですか。理解してない私が悪いんですねと。

結論?

ということで、とりあえず、releaseにjar入りファイルはアップロードできた(手動で)ので -uオプションで直接URL指定すればインストールできるだろ!と諦めました。 いい勉強になりました。。。

README見ていただくとインストール方法が分かりますが、長いです。。。

時間をとって本腰入れてSonatypeにMavenコマンドでアップロードできるようにしようかな。。。

Comments