Jenkins,Redmine使いこなし勉強会に参加しました と、ちょっとプラグイン作ってみた #jen_red
Redmineプラグイン活用入門 - @Kokawa Takashi (@Kokawa_Takashi) op Twitterさん
注意:Redmine開発環境が安定していないので、すぐ陳腐化してしまう事がある!
プラグインの探し方・おすすめ
- Redmineプラグイン集 - r-labs
- Plugins - Redmine
- 一つだけおすすめを… Wiki Extensions Plugin
- オートプレビュー
- 任意のページをメニューに
- 任意のページを埋め込み 等々…
- 他のおすすめ
- CodeRevirew
- Backlogs
- TimeTracker
REST API
- 自動でチケットを作ったりできる
- チケット一覧を取得できたり
- この一連の流れができたらJenkinsに任せる事ができる
- 期日が間近のチケットのメール通知などもできる
プラグインを作る
- Redmine1.4 or 2.0が対象(Ruby1.9,Bundler対応している/これ以前はしていない)
- プラグイン開発環境構築がつらいので
Ruby環境
- WindowsならRubyInstaller + DevKit
- MacならRVM
- 自分でも少しまとめている 複数のRuby環境の管理・切替ができるrvmをインストールした - kk_Atakaの日記
Redmineインストール
- 公式を参考に
- rmagickを除外する
bundle install -without development test rmagick -path vendor/bundle
NetBeans
- ただし、公式サポートは6.9.1が最終
一つだけシンプルなプラグインを
- Redmineのメニューからヘルプを消す
- スケルトンを作ってinit.rbに一文足すだけ
- 最後に試してみるよ
Jenkinsプラグイン活用入門- @さぼてん(さぼ福)しんざき 佐藤太一 (@cactusman) op Twitterさん
Jenkinsとは
- 高性能Cron
プラグインの探し方
- 探す前に…
- shやbatなどをうまく組み合わせられないかなどをまず考える
- Jenkins自体の昨日もうまく使う
- プラグイン自体は本家に登録されている
- Jenkins Plugin Hub
- ソフト、ツール名などでとりあえず引っ掛けてみる
プラグインの使い方
- すごくメンテされているものとほったらかされているものでまちまち
- コミットやDL数を見てみる
- TackScanerPlugin
- キーワードを拾う(TODOなど)
- 最後に入れてみる
- DickUsagePlugin
- Jenkinsのディスク使用量を見る
- JobConfigHistoryPlugin
- 設定ファイルのバックアップ、差分表示
プラグインのハック
- エクステンションポイントを継承する
- Notifierを継承すれば通知系の事ができる
- mvnにおまじないを追加する
- Jenkinsの公式Pluginが参考になる
実際にやってみる(Redmine)
メニューの一部を消してみる。
環境
- Windows XP
- Ruby 1.8.7
- Redmine 1.0.0.stable (SQLite)
手順
- はじめにRedmine Pluginのスケルトンを作成する。名前はdelete_menuとした
$ cd REDMINE_ROOT $ ruby script\generate redmine_plugin delete_menu ./script/../config/../vendor/rails/railties/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010. Use #requirement create vendor/plugins/redmine_delete_menu/app/controllers create vendor/plugins/redmine_delete_menu/app/helpers create vendor/plugins/redmine_delete_menu/app/models create vendor/plugins/redmine_delete_menu/app/views create vendor/plugins/redmine_delete_menu/db/migrate create vendor/plugins/redmine_delete_menu/lib/tasks create vendor/plugins/redmine_delete_menu/assets/images create vendor/plugins/redmine_delete_menu/assets/javascripts create vendor/plugins/redmine_delete_menu/assets/stylesheets create vendor/plugins/redmine_delete_menu/lang create vendor/plugins/redmine_delete_menu/config/locales create vendor/plugins/redmine_delete_menu/test create vendor/plugins/redmine_delete_menu/README.rdoc create vendor/plugins/redmine_delete_menu/init.rb create vendor/plugins/redmine_delete_menu/lang/en.yml create vendor/plugins/redmine_delete_menu/config/locales/en.yml create vendor/plugins/redmine_delete_menu/test/test_helper.rb
- vendor/pluginにredmine_delete_menuというフォルダができている
$ ls ... redmine_delete_menu/ ... $ cd redmine_delete_menu $ ls README.rdoc assets/ db/ lang/ test/ app/ config/ init.rb* lib/
- init.rbに例の一文を挿入
Redmine::Plugin.register :redmine_delete_menu do ... + delete_menu_item :top_menu, :help end
- そして起動
$ cd REDMINE_ROOT $ ruby script\server -e production => Booting WEBrick => Rails 2.3.5 application starting on http://0.0.0.0:3000 ./script/../config/../vendor/rails/railties/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010. Use #requirement => Call with -d to detach => Ctrl-C to shutdown server [2012-05-28 19:15:50] INFO WEBrick 1.3.1 [2012-05-28 19:15:50] INFO ruby 1.8.7 (2010-12-23) [i386-mswin32] [2012-05-28 19:15:50] INFO WEBrick::HTTPServer#start: pid=4640 port=3000
- http://localhost:3000 にアクセスすると…おお! 消えてる!
手順その2
- いきなりgenerateしようとしたらbundle installしろと言われた
$ ruby script\generate redmine_plugin delete_menu Some gems may need to be installed or updated. Please run `bundle install --without development test`.
- なのでbundle install
$ bundle install --without development test --path ./vendor/bundle Fetching source index for http://rubygems.org/ Installing rake (0.9.2.2) Installing activesupport (2.3.14) Installing rack (1.1.3) Installing actionpack (2.3.14) Installing actionmailer (2.3.14) Installing activerecord (2.3.14) Installing activeresource (2.3.14) Installing coderay (1.0.6) Installing i18n (0.4.2) Installing mysql2 (0.2.18) Installing net-ldap (0.3.1) Installing pg (0.13.2) Installing rails (2.3.14) Installing rmagick (2.13.1) with native extensions
- rmagickが入らず止まりっぱなし……そういえば、rmagickは使わなければwithoutしてしまってもいいです的な事を言われていた気がするのでそれをプラス
$ bundle install --without development test rmagick --path ./vendor/bundle Fetching source index for http://rubygems.org/ Using rake (0.9.2.2) Using activesupport (2.3.14) Using rack (1.1.3) Using actionpack (2.3.14) Using actionmailer (2.3.14) Using activerecord (2.3.14) Using activeresource (2.3.14) Using coderay (1.0.6) Using i18n (0.4.2) Using mysql2 (0.2.18) Using net-ldap (0.3.1) Using pg (0.13.2) Using rails (2.3.14) Installing ruby-openid (2.1.8) Installing sqlite3 (1.3.6) Installing tzinfo (0.3.33) Using bundler (1.0.21) Your bundle is complete! It was installed into ./vendor/bundle
- 再度。先ほどbundlerを使ったのでbundle exec
$ bundle exec ruby script\generate redmine_plugin delete_menu C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/activesupport-2.3.14/lib/active_support/inflector.rb:3:in `<top (required)>': iconv will be deprecated in the future, use String#encode instead. NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01. Gem.source_index called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails/gem_dependency.rb:21. NOTE: Dependency.new w/ a regexp is deprecated. Dependency.new called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails_generator/lookup.rb:211 NOTE: Gem.cache is deprecated, use Gem::source_index. It will be removed on or after 2011-08-01. Gem.cache called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails_generator/lookup.rb:212. NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01. Gem.source_index called from C:/rubies/Ruby-193-p0/lib/ruby/1.9.1/rubygems.rb:1154. NOTE: Gem::SourceIndex#search is deprecated with no replacement. It will be removed on or after 2011-11-01. Gem::SourceIndex#search called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails/vendor_gem_source_index.rb:119. NOTE: Gem::SourceIndex#search is deprecated with no replacement. It will be removed on or after 2011-11-01. Gem::SourceIndex#search called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails/vendor_gem_source_index.rb:119. NOTE: Gem.cache is deprecated, use Gem::source_index. It will be removed on or after 2011-08-01. Gem.cache called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails_generator/lookup.rb:234. NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01. Gem.source_index called from C:/rubies/Ruby-193-p0/lib/ruby/1.9.1/rubygems.rb:1154. NOTE: Gem::SourceIndex#each is deprecated with no replacement. It will be removed on or after 2011-11-01. Gem::SourceIndex#each called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails/vendor_gem_source_index.rb:123. NOTE: Gem::SourceIndex#each is deprecated with no replacement. It will be removed on or after 2011-11-01. Gem::SourceIndex#each called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails/vendor_gem_source_index.rb:124. create vendor/plugins/redmine_delete_menu/app/controllers create vendor/plugins/redmine_delete_menu/app/helpers create vendor/plugins/redmine_delete_menu/app/models create vendor/plugins/redmine_delete_menu/app/views create vendor/plugins/redmine_delete_menu/db/migrate create vendor/plugins/redmine_delete_menu/lib/tasks create vendor/plugins/redmine_delete_menu/assets/images create vendor/plugins/redmine_delete_menu/assets/javascripts create vendor/plugins/redmine_delete_menu/assets/stylesheets create vendor/plugins/redmine_delete_menu/lang create vendor/plugins/redmine_delete_menu/config/locales create vendor/plugins/redmine_delete_menu/test create vendor/plugins/redmine_delete_menu/README.rdoc create vendor/plugins/redmine_delete_menu/init.rb create vendor/plugins/redmine_delete_menu/config/locales/en.yml create vendor/plugins/redmine_delete_menu/test/test_helper.rb
- deprecateがやまほど出たけど、一応スケルトンは作れたみたい。で、init.rbを編集。ここは同じ
Redmine::Plugin.register :redmine_delete_menu do ... + delete_menu_item :top_menu, :help end
- で、起動。ここでもbundle exec
$ bundle exec ruby script\server -e production C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/activesupport-2.3.14/lib/active_support/inflector.rb:3:in `<top (required)>': iconv will be deprecated in the future, use String#encode instead. => Booting WEBrick => Rails 2.3.14 application starting on http://0.0.0.0:3000 NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01. Gem.source_index called from C:/redmine-1.4.0/vendor/bundle/ruby/1.9.1/gems/rails-2.3.14/lib/rails/gem_dependency.rb:21. => Call with -d to detach => Ctrl-C to shutdown server [2012-05-28 20:03:32] INFO WEBrick 1.3.1 [2012-05-28 20:03:32] INFO ruby 1.9.3 (2011-10-30) [i386-mingw32] [2012-05-28 20:03:32] INFO WEBrick::HTTPServer#start: pid=3248 port=3000
1.4台でもいけた!
実際にプラグインを入れてみる(Jenkins)
Task Scanner Pluginを入れてみよう。
環境
- Windows XP
- Jenkins 1.450
手順
- Jenkinsの管理 => プラグインの管理 => 利用可能タブ => Task Scanner Pluginをチェックしインストール
- Static Code Analysis Plug-insも同時にDLされるみたい
- 再起動
- Jenkinsプロジェクト => 設定 => ビルド後の処理 => 未解決タスクの集計*1にチェック
- 保存してビルド
- 一度ビルドするとJenkinsプロジェクトのメニューに【未解決タスク】のリンクが表示される
- 今回設定した//TODOがまとめられてる!
- 後、//TODO hogehogeとキーワードの後ろに何か書いておくとメッセージとしてどんなTODOなのかも表示される!