torutkのブログ

ソフトウェア・エンジニアのブログ

Jenkins,Redmine使いこなし勉強会

5/25 19:00-21:00 Jenkins,Redmine使いこなし勉強会に参加してきました。当初定員いっぱいで補欠登録でしたが、定員増加対応で参加確定しました。当日になるとキャンセルが増えて、空きがあったようです。

開催概要

UST(録画)

Togetter

発表資料

Redmineプラグイン活用入門

プラグインの探し場所、本家のほかr-labさん、r-labは日本語、投票機能ありです。

発表者@kokawaさんによる、プラグインを1つおススメするならWiki Extensions、さらに3つ加えるならCodeReview、Backlogs、TimeTrackerとのこと。

Wiki Extensionsのデモ。このプラグインはもちろん使っていますが、知らない機能がデモで紹介されており収穫でした。外部のWebページの埋め込み、チケットクエリなど。

Redmineの機能に不満があったら、

  1. まずプラグインを探す
  2. REST APIで解決する
  3. プラグインを作る

ということです。REST APIは存在は知っていましたが、活用方法があまりイメージできませんでした。Jenkinsから連携するにもREST APIがよい感じです。

デモでは、

  • RESTClientというツールでREST APIを呼び出し、チケット一覧の取得、新しいチケットの登録
  • JenkinsからPythonREST API呼び出しでチケットを作成、PythonはJenkinsのプラグインREST APIの呼び出しはPythonが楽。応用例は、毎週定期的に実行するタスクのチケットを自動作成するなど。

プラグイン開発環境
WindowsならRubyInstaller+DevKit、データベースはSQLite3が楽。サーバー起動はWEBrick
bundlerでのTips

  • --withoutにrmagickを指定(ImageMagickがらみはトラぶりやすい)
  • --pathでvendor/bundleを指定すると環境が汚れない

Rubyデバッグ環境で、ruby-debug-base19xとruby-debug-ideは、gem install時に--preを付けて開発最新版を入れる

  • NetBeansについては6.9までは標準でRuby対応してますが、7.0以降は標準でRuby開発機能はなくなり、別途プラグインを入れる

Redmineプラグインの作り方については、「ソースを見ればわかる」。
Redmine本体もプラグインも構造がきれい・名前がわかりやすいそうです。Ruby on Railsがそうかもしれないとのことです。

あと、プラグイン活用のTipsで、古いメンテナンスされてないプラグインは使うな、とありました。

Jenkinsプラグイン活用入門

シェル・バッチ・スクリプト言語などをうまく組み合わせるのがJenkins。

プラグインの探し方、本家には400以上あり望みのものを探すのは大変、Jenkins Plugin Hubを使うと絞り込みがあるので探しやすい。

おススメのプラグイン3つ

  • TaskScanner
  • DiskUsage
  • JobConfigHistory

標準機能でスクリプトコンソール上でGroobyのコードを入力し実行できる

プラグインの作り方
エクステンションポイントを継承する
mavenでビルド

やはりソースを見よ

Jenkinsのメーリングリストがあるけどみんなメールを投げないですね。

Jenkins, Redmine座談会から

Jenkinsでビューを作り、RedmineWiki Extensions Plugin)で外部URLを取り込むというのが連携の1つ

Redmine活用例の1つ
ミーティングをチケットとしてリマインダーでお知らせ、議事録を載せたらクローズ、という運用がある

Jenkinsにはviolationsプラグインがあって、静的解析ツールの多くに対応してソースコードを検証する機能を載せられる

Redmine 1.4(以前?)→ 2.0のデータベース移行は検証実績なし

感想

RedmineREST APIをjenkinsから使うという方法で、Jenkinsのcron機能でRedmineのチケットを発行したり、集計したり、というアプローチはプラグイン開発は不要で連携が可能になる点でよいかなぁと思いました。
Redmineは、Tracに比べてチケットの集計と加工が弱いのですが、Redmineで解決しようとするとプラグイン開発が必要になりますし、CSVエクスポートしてExcelで頑張るのも手間な話でした。RESTで別システムに抜き出しそっちで加工、というのは良い手かもしれません。

Rubyの開発環境を丁寧に解説し、またはまりポイントの紹介もあり、とてもよい感じです。勉強会のプレゼンターは大抵その道のエキスパートなので、環境構築は説明するまでもない、という感じですが、ノービスとしてはそこが最初のはまりポイントです。

勉強会形式については、プレゼンテーション型ではどうしても一方向になりがちで、議論を起こすのは難しいかもしれません。RedmineやJenkinsは、参加者もそれなりにネタを持っていることが多いので、うまく持ちネタの紹介合戦になるような場が設けられるといいのですが。

Redmineバージョンについて

この春、1.4.{0,1,2}、および2.0.0が出てます。バージョンアップすべきかどうか悩みどころですけれど、

  • 現在 Ver.1.3系を使っている人
    • 2.0は、Redmineの機能的には1.4と同じなので、どうしてもRails 3.2.xが欲しいという人やプラグインは当面いらないぜ、という人にのみおすすめ。多分プラグインは2.0対応とうたってなければ使えない。プラグインインストールディレクトリ自体が変更になっている(vendor/plugins -> plugins)。
    • 1.4は、1.4の新機能を使いたいならおすすめ。プラグインは一部動かなくなるかも。インストール方法が1.3と変わります(bundler使う)

ということで、当面1.3にとどまっていてもよいかと思います。

  • あたらしくRedmineを使ってみる人
    • 2.0はプラグインがなくても(後々2.0対応になってから導入すればよい)という人
    • 1.4はプラグインをはじめから使いたい人
    • 1.3は1.4では動かないプラグインをはじめから使う人

というところかと思います。

でも、1.4ってかなり新機能が入っていて、同一プロジェクトから複数SCMのリポジトリを参照できる、チケットからリビジョンへの参照を変更できる、Wikiで新規ページ作るときにデフォルトで親ページが設定される、プロジェクトのWikiページ一括PDF出力、など機能満載だったりします。