No Bugs, No Life

読んだ本や、プログラミング、システム開発等のねたを中心に。文章を書く練習なので少し硬派に書くつもりだけど、どうなることやら。

BTSの導入(続報:GitHubのIssuesとMylynの連携)

前回(と言っても数時間前だが)はMWのBTSを検討するに際して、「Trac Lightningは導入が簡単だがオーバースペックかも。」という結論だったが、諦めきれずに他の良い方法が無いかと探していたら、MWのリポジトリとして使用しているGitHubが活用できることがわかった。
実際に試してみるといい感じっぽいので導入手順等をメモ。

前回までのおさらい

MW開発の気分転換に、MW用のBTS導入を思いつくも、なかなか良いホスティングサービスが見つけられず、TracLightningを導入した。
TracLightning自体は高い完成度のパッケージだと思うが、MWは1人開発プロジェクトなので、Apacheをローカルで立ち上げる必要性がある点などが若干オーバースペック気味という結論。

前回からの飛躍

いきなりGitHubとMylynの接続から記録しても飛躍がはなはだしいので簡単に経緯を。
前回に一寸触れた、Papilio(Papilio-バグトラッキングシステム-)から連想してEclipseが持ってるTaskビューに思い至った。
Taskビューの使い方を調べているとMylyn(Eclipse Mylyn Open Source Project)なるキーワードが出てきた。
MylynはTaskとALM(Application Lifecycle Management)のフレームワークとのことで、公式ページを眺めていたらGitとの連携がNewsにあった*1ので調べてみた、と言う経緯。

MylynのGitHub Connectorを導入

ここからが本題。

MylynとGitHubの関係

MylynはTask Repositoryとして、各種トラッキングシステム*2に接続してそこからTaskを同期する機能を持っている。
つまり、GitHubでIssueを登録しておけばそれをMylyn上でTaskとして扱うことが出来る。
Mylyn自身は、Taskとコードの変更箇所の紐付けを行うことができるのでIssue@GitHub→Task@Mylyn→ソースファイル@Eclipseという紐付けを管理することが可能になる。

Mylynコネクタの導入

デフォルトではMylynのTask RepositoryはGitHubとのコネクタを持っていないので、EclipseのInstall New Softwareからプラグインを導入する。
JUNOの更新サイトを指定し、Eclipse EGit Mylyn GitHub Featureを導入する。
この記事を記載時点のバージョンは、2.2.0.201212191850-r らしい。
f:id:kazyury:20130331005938p:plain
導入自体は何ら問題なし。
なお、注意点が1点。
Eclipse Marketplaceで最初探していたらGitHub Mylyn Connectorがあったので導入しようとしたが、GitHub Mylyn Connectorが依存するEclipse EGit Mylyn GitHub Featureの依存関係が解決できずにインストールできなかった。
エラーメッセージは以下のとおりだが、要するに新しいEclipse EGit Mylyn GitHub Feature(2.3.0.201302130906)が見つからないと言うことらしい。

Your original request has been modified.
  "Eclipse EGit Mylyn GitHub Feature" is already installed, so an update will be performed instead.
Cannot complete the install because one or more required items could not be found.
  Software being installed: Eclipse EGit Mylyn GitHub Feature 2.3.0.201302130906 (org.eclipse.mylyn.github.feature.feature.group 2.3.0.201302130906)
  Missing requirement: Mylyn GitHub Connector Core 2.3.0.201302130906 (org.eclipse.mylyn.github.core 2.3.0.201302130906) requires 'package org.eclipse.jgit.lib [2.3.0,2.4.0)' but it could not be found
  Cannot satisfy dependency:
    From: Eclipse EGit Mylyn GitHub Feature 2.3.0.201302130906 (org.eclipse.mylyn.github.feature.feature.group 2.3.0.201302130906)
    To: org.eclipse.mylyn.github.core [2.3.0.201302130906]

GitHub Mylyn Connector | Eclipse Plugins, Bundles and Products - Eclipse Marketplaceを見る限り使えそうなんだけど、深追いせずにJUNOの更新サイトから落とした。
指示通り、Eclipseを再起動する。

Task RepositoryとしてGitHubを登録する

再起動後のEclipseでTask Repositoryビューを表示する。
f:id:kazyury:20130331011815p:plain
ドラム缶に+マークアイコンを押し、Repositoryの追加*3を行う。ここではGitHub Issuesを選択する。
f:id:kazyury:20130331011959p:plain
次のGitHub Issue Repository Settingsダイアログでサーバー、ユーザーID、パスワードなどを入力してFinishで接続が作成される。

GitHub Issuesの検索Queryを作成する

続いてQueryを作成するか?と聞かれるのでYesと応答すると、クエリの編集画面が表示される。
f:id:kazyury:20130331012809p:plain
タイトルはTask Listビューで表示されるときのタイトルなので適当に。
LabelはGitHub上で起票したIssueのラベルを選択する。
既にGitHub上でIssueを起票してあった場合には、以下のようにTask ListビューにGitHubのIssueが表示される。
f:id:kazyury:20130331012950p:plain

その他

Mylynの使い方

この記事ではMylynの使い方については記載しないが、Mylyn入門slideshareが判りやすかったのでそちらを参照。

新規Issueの発行

まだ実際には発行(submit)していないが、GitHub上のIssueの発行もMylynから行える様子。

MylynのContextとGitHubへのコミットログ

MylynでTaskをActivateした状態でGitHubへのコミットを行うと、コミットログにIssue#などをプリセットしてくれる。何気にありがたい。


せっかくTrac Lightningを入れたけど、GitHubのIssueが使えるならば、(少なくともMWの開発では)此方が優勢かな。

*1:Not foundだけど

*2:もともとBTSと言うキーワードでホスティングサービスを探していたからGitHubを見逃していた。Issue Tracking SystemがBTSを包含しているんだな。

*3:因みに、MylynコネクタとしてRTCコネクタなども利用できる様子。 RTCクライアントならワークアイテムの割り当てとかワークアイテムのステータス管理とかはデフォルトだけど、MylynのContextのような機能は無かったと思うのでMylynからのRTCコネクタも良いかも知れない。ただし有料と思われる。