もっと軽くする

  • ジョブの情報は depth=0 でもってきたいのだけど、そうすると、description が取れない
  • depth=1 で持ってくると、今までのビルド全部が取れてしまう…(1年も経てばすごいことに)
  • 今は depth=1 で持ってきているので、これを何とかしたい。

うーん。depth=0.5 くらいで description もってこれないかなぁ。
メーリングリストで方法がないか聞いてみよう。

exclude というキーワードを使って、要素を除外することができるとのこと。(川口さんありがとうございます)
xpath に慣れていないので、どこかに例はないかと探したら…あった!

うわ。川口さんのブログにあるし…。よく調べずに聞いてしまってごめんなさい。

Hudsonプラグイン

こんなところまでできました。

今できていること

  • ジョブの名前、説明、ヘルスレポート、最新のビルド状況が表示できます
    • 説明は、Redmine で対応している textile 記法を使うことができます
  • 一応、ビルドの要求を投げることもできます
  • 多分フリースタイルのビルドにしか対応できていません
  • Hudson の URL はハードコーディング…なのです


やりたいこと

  • ジョブが起動されるタイミング をメッセージにして表示したい
  • ヘルスレポートはアイコンにしたい(あのお天気が表示できなければ…)
  • ビルドの要求は完全投げっぱなしなので、ビルド番号XXで受け付けました くらい表示したい
  • MavenMSBuild のビルドにも対応したい
    • MSBuildはともかく、Mavenの環境とプロジェクト作るの大変そう

成果物について

Hudson プラグインを作るぞ

誰か作ってそうだけど、まぁ。
とりあえずは、

  • ジョブの名前と詳細、状況を表示する

ところから始めよう。
XMLスプレッドシートはおあずけ。

で、まずは、環境の準備から。
自分の端末に Hudson まで入れるのもなーと思ったので、VirtualPC を使うことにする。

OSは……最新のものはないので、Windows2000Server なぞを…。
Linux にすべき? いや、Linux はあんまり触ったことないから導入コストが高すぎる…orz

よくよく考えたらもう9年も前のOSなのかー。IE7.0が入らないと分かってびっくり。
まぁ WindowsUpdate が対応してくれていただけありがたいと思おう。

ストーリーとタスク(2)

Redmineはチケットでタスクを管理するのだけれど、ストーリーも管理したい。

ほしいもの

  • ストーリーを管理したい
    • 専用のメニューがほしい
    • ストーリーとタスクが混ざらないようにしたい
  • ストーリーからチケットを作成したい
  • ストーリーからチケットの状況を把握することができるようにしたい
    • チケットの総数/未完了/完了
  • 既存のチケットもストーリーに組み込めるようにしたい
  • すでにRedmineが運用中なので、それに組み込む形にしたい

さっきの続き

redmine_story_decomposition プラグインがそれくさい。

  • トラッカー"story" と、トラッカー"task" のチケット同士を、関連 "composes" で結びつけようとしている

ちっとゴールが見えてきた気がする。

ストーリーとチケット
  • ストーリーとタスク用のトラッカーを用意する
  • ストーリーとタスクは、関連付けで結びつける
    • いい名前はないか?(関連するじゃちょっと味気ない)
    • 関連付けの種類を増やすことは簡単だろうか?
      • IssueRelations に追加すれば何とか(Redmineのバージョンアップで絶対はまりそう)
  • ストーリーとタスクは分けて表示したい
    • タブを追加するしかないかなー。下の「今やるものとこれからやるもの」と協調させたいんだけど
このイテレーションでやるものと、それ以外のもの
  • とても分かりやすくていい
    • クエリを使えば実現できるんだけど、「簡単にすぐ見ることができる」のはとても大事だと思う
    • デフォルトで特定のクエリを使うようにすればできる?
      • クエリに指定する条件の値は固定だから、「今週のチケット」を見るためのクエリは用意できない
      • やっぱり自作か?

ストーリーとタスク

Redmineはチケットでタスクを管理するのだけれど、ストーリーも管理したい。

  • ストーリーを管理したい
    • 専用のメニューがほしい
    • ストーリーとタスクが混ざらないようにしたい
  • ストーリーからチケットを作成したい
  • ストーリーからチケットの状況を把握することができるようにしたい
    • チケットの総数/未完了/完了
  • 既存のチケットもストーリーに組み込めるようにしたい
  • すでにRedmineが運用中なので、それに組み込む形にしたい

RedmineへScrumのアイデアを注入: プログラマの思索
Scrumのアイデアを注入したプラグインがあるとの情報をゲット。もしかしたらそのまま使えるかも??

vendor/plugin にあった

を評価用のRedmineに突っ込む。実行すると

  • チケット/新しいチケット/ロードマップが消えた!
  • 代わりに ProductBacklog と SprintBacklog が表示された
  • ProductBacklog を選択すると…コケタ。

ちょっとソースを見てみる。

  • db:migrate_plugins してなかった
  • story というトラッカーが必要

再度挑戦。ProductBacklog は動くようになった! SprintBacklog がコケル

  • @project.current_version がナイ!とのお告げ

確かに current_version って定義されていないんだけど…。<-- イマココ
ないので、versions[0] を使うようにちょっと小細工。

  • VelocityChart::Gchart がナイ!

vendor/gems/mattetti-googlecharts-1.3.6 がいるらしい。
おいたけど変わらない。インストールが必要?
そうだった。 gem install googlecharts したのにダメ。なぜ?

require 'gchat'

がなかったかららしい。ふーむ。
一応動いた…けど、

  • スプリントバックログとプロダクトバックログの違いって何?
  • ストーリーってチケットをまとめてくれるものじゃないんだ?

プロダクトバックログに入れてたストーリーにバージョンがついてなかったので、付けてみたら…

あぁ、待機中のタスクと、このバージョンで行うべきタスクを分けるためのプラグインなのね。
確かにいいかも。でも、ストーリーとタスクをまとめるためのものじゃないなぁ。

さて。どうするか。

  • 待機中タスクと、このバージョンで行うタスクが分かれるというアイデアは使ったほうがよさそう
  • redmine_issue_grouping を使って、タスクをグルーピングできないかな?

ちなみに、StoryPoints が動作しない件は、

  • カスタムフィールドを用意する(名前はStoryPointsがいいと思うけど)
  • story_point_extension.rb の6行目を以下のようにするといけるかも。
story_point_value = custom_values.detect {|cv| cv.custom_field.name == '[カスタムフィールドの名前]' }

メールを送る(2)

どうやらMailerというActionMailerを継承したクラスがあるらしい。
これを使うと、Redmineのメール設定を利用できるらしいので、そっちに乗り換えよう。
ちなみに、Redmine のメール設定は

  • config/environment.rb

でやるとのこと。画面じゃないんだ。