プロジェクト

全般

プロフィール

Feature #142

完了

定期的にHudsonの情報を取得できるようにする

Toshiyuki Ando さんが14年以上前に追加. 14年以上前に更新.

ステータス:
終了(Closed)
優先度:
通常(Normal)
担当者:
対象バージョン:
開始日:
2009/08/02
期日:
2009/08/16
進捗率:

100%

予定工数:
作業時間:

説明

やりたいこと

Hudsonの情報を定期的に取得したい。
今は、Hudson タブにアクセスした時に取得しているので、
ぼーっと待たされることが多々ある。

リポジトリだと Repository.fetch を使って情報を取得できるみたいなので

  • Hudson.fetch

で情報を取得できるようになると良いかな。

Toshiyuki Ando さんが14年以上前に更新

ひとまず、

rake タスクで Hudson.fetch_buildresults というメソッドが呼び出せるように

なった。(実装はまだまだ)
で、Hudson 側にビルド結果を取得するコードを取り入れようと思ったら…
うーん。今までの実装汚すぎ。

整理しよう。うん。

Toshiyuki Ando さんが14年以上前に更新

前にも書いた気がするけど、

  1. DBに蓄積しているジョブの情報を取得する
  2. Hudsonからジョブの最新情報を取得する
  3. 最新情報を使って、各ジョブの情報を更新する
    1. 新しいジョブの場合は、まずジョブを作成する
    2. ジョブの情報を更新する(説明と状態=色)
    3. ヘルスレポートを更新する(ヘルスレポートの文章毎)
      ※ 説明、状態、ヘルスレポートは現在蓄積されていない
  4. ビルド情報を更新するかどうかをチェックする
    (最新のビルド番号と蓄積しているビルド番号を比較)
  5. 更新しない場合は、蓄積している最新のビルド情報を取得する
  6. 更新する場合
    1. RSS でビルドの最新情報を取得する
    2. 最新情報を使って、ビルドの情報を更新する(必要な分だけ)
  7. ビルドの詳細な結果(テスト結果やChangesetなど)を取得する
    1. 詳細な結果を取得する
    2. 詳細な結果を蓄積する

うーん。全然整理できてない。よくまぁ作れたもんだ。
そもそも

  1. ジョブの情報を取得する
  2. 更新があれば、ジョブを更新する
    1. 状態と、ヘルスレポート、説明の更新
  3. ビルド情報を更新するかどうか判定する
    1. 上記の情報に最新のビルド番号があるはずなので、それを使う
  4. ビルドの情報を取得する
  5. 更新があれば、ビルドを更新する
    1. ビルドの詳細な結果を取得する(オプションで設定されていれば)
    2. ビルドに詳細な結果を追加する(オプションで設定されていれば)

くらいだよな?
制限事項は、

  • ビルド情報は多くなるからDBに蓄積されているもの全部は取り出さない。
  • APIは何回も叩くと遅くなるから、なるべく叩く回数少なくする

これと上のを見合わせながら、もう一度整理しなおそう。

Toshiyuki Ando さんが14年以上前に更新

もそもそとテスト実装中。
これはどうだろうか?と思ったものをメモ。

  • hudson_settings_health_report.get_url ってこのクラスにあるのがいいの?
    ⇒ ジョブの名前やURLを使ってあれこれしている

Toshiyuki Ando さんが14年以上前に更新

  • 対象バージョン17 から 1.0.0 に変更

Toshiyuki Ando さんが14年以上前に更新

rake redmine_hudson:fetch_buildresults

で定期的に取得できるようになりました。
index にアクセスする際に取得しないよう、設定を変更できるようにしなくては。

repository では settings.yml で指定するようだけど、それと同じにするか?
それともプラグイン全体の設定として、プラグインのページで設定できるようにするか?

うーむ。

Toshiyuki Ando さんが14年以上前に更新

redmine_hudson::fetch_buildresults

だと名前が悪いので(ジョブの情報も取得するし)

redmine_hudson::fetch

にしよう。

Toshiyuki Ando さんが14年以上前に更新

エラーが発生した場合、どこに記録すべきなのか?
redmine:fetch_changesets の場合、

svn: OPTIONS (URL: 'http://hoge.local/svn/test-1'): サーバに接続できませんでした

のようなログがでるので、これに合わせてみるか。

Toshiyuki Ando さんが14年以上前に更新

Toshiyuki Ando wrote:

index にアクセスする際に取得しないよう、設定を変更できるようにしなくては。

repository では settings.yml で指定するようだけど、それと同じにするか?
それともプラグイン全体の設定として、プラグインのページで設定できるようにするか?

プラグイン全体の設定として、設定画面を用意することに。
settings の使い方、忘れてたよ…。

Toshiyuki Ando さんが14年以上前に更新

  • ステータス新規(New) から 解決(Resolved) に変更

Toshiyuki Ando さんが14年以上前に更新

  • 進捗率0 から 100 に変更

Toshiyuki Ando さんが14年以上前に更新

  • ステータス解決(Resolved) から 終了(Closed) に変更

他の形式にエクスポート: Atom PDF