JenkinsからIRCへビルド結果を通知する
CentOS上のJenkinsからSkypeへビルド結果を通知する
CentOSへSkypeインストール
こちらの記事を参考させてもらいインストール。
Install Skype 4.0 for RHEL/CentOS 6.3 and Fedora 17/16
ただ、
yum で依存ライブラリをインストールするときに、ワンライナーだとエラーになったので1行ずつ実行した。
なんでかはわからない。。。
Skypeのデーモン化
こちらの記事を参考にさせてもらい実施
Linux上で動くSkype用のbotを作る方法 - muddy brown thang
HTTPでSkypeにBOT投稿(CentOS5編) - IT 東京 楽しいと思うこと
Jenkinsの skype-notifier plugin を試すも、Skypeに繋がらないとでる…
もう、いっそのこと自分でプラグイン作る。
Skype4java 使えば簡単にできるんでしょ?!
↓
Skype4java Linux動かないあばあば^q^
↓
もうSkype4Py しかない!!
Python Plugin を参考に、Jenkinsプラグイン上からPythonスクリプト実行できるようにして、
# encoding: utf-8 import sys import Skype4Py args = sys.argv if len(args) < 3: quit() chatname = args[1] message = args[2] skype = Skype4Py.Skype(Transport='x11') skype.Attach() for chat in skype.Chats: if chatname == chat.FriendlyName.encode('utf-8'): chat.SendMessage(message)
上みたいなスクリプトでSkypeに接続するようにした。*1
あと、ビルド時に通知するメッセージとかは、instant-messaging-plugin 参考にして書いてみた。
このハイパーおれおれプラグインで一応、通知されるところまでは行くようになったよー。
*1:つまり別途Skype4Pyをインストールしないと動かない
Jenkins を使ってRailsプロジェクトでゴニョゴニョするまでの道のり その7
目標
ビルド結果を通知
CentOS上のJenkinsからSkypeへビルド結果を通知する - shmztko's diary
JenkinsからIRCへビルド結果を通知する - shmztko's diary
これでやりたいことは大体できるようになった!
やったー
Jenkins を使ってRailsプロジェクトでゴニョゴニョするまでの道のり その6
目標
- Github上からRailsプロジェクト取ってくる。
- ビルド(bundle install/update とか、rake db:migrate)する。
- メトリクス計測する。(reek, roodi)
- RSpec実行
- テストレポート・カバレッジレポート生成
- ビルド結果を通知
テストレポート・カバレッジレポート生成
Gemfileにレポート出力関連のGemを記述します。
group :test do gem 'rspec-rails', '2.12.0' gem 'simplecov', :require => false gem 'simplecov-rcov', :require => false gem 'ci_reporter' end
bundle install します。
カバレッジレポートの準備
- simplecovの設定
spec/spec_helper.rb の先頭に
require 'simplecov' SimpleCov.start 'rails'
を追記
この時点で rake spec すると coverage 配下にレポート出力される
ただ、JenkinsのRcovプラグインと連携させるためにsimplecovの結果をRcov形式に変換しないといけない。
spec/spec_helper.rb の先頭の記述を
require 'simplecov' require 'simplecov-rcov' SimpleCov.start 'rails' SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
に変更
これで、rake spec すると coverage/rcov 配下にレポート出力されてる。
JenkinsのRCovプラグインの設定で、どのディレクトリ配下のレポートを読み込むか?ってのがあるので coverage/rcov を指定する。
テストレポートの準備
ci_reporterの設定。ci_reporter は、RSpecの結果をJUnitのレポート形式に変換するGemだそうです。JUnit形式ならJenkinsがデフォルトで取り込めるよーってことか。
Rakefile を編集して、
require 'ci/reporter/rake/rspec'
を追記。
これで、
rake ci:setup:rspec spec
すると、spec/reportsへRSpecのレポートが出力されてる。
Jeninsの JUnitテスト結果の集計の設定で、読み込みファイル対象に spec/reports/*.xml を指定する。
参考 Jenkins で Rails 3 プロジェクトのテスト結果とカバレッジをグラフ表示する - mallowlabsの備忘録
ジョブのビルドスクリプト
export http_proxy='http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}/' bundle install --path vendor/bundler rake db:migrate rake quality rake ci:setup:rspec spec
Jenkins を使ってRailsプロジェクトでゴニョゴニョするまでの道のり その4
目標
メトリクス計測する。(reek, roodi)
1. Gemfile を編集して、メトリクス計測用のGemを入れるます。
group :test do gem 'ZenTest', '= 4.8.3' gem 'roodi', '~> 2.2.0' gem 'reek', '~> 1.2.13' gem 'flay' gem 'flog' end
2. Rakeタスクを作る
参考 http://d.hatena.ne.jp/ytakamiya/20100313/1268480448
参考のURLの通りやるます。
3. ジョブの設定から、ビルドスクリプトにコマンド追加
export http_proxy='http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}/' bundle install --path vendor/bundler rake db:migrate rake quality
4. ハマった所
roodi の 2.2.x 系と、reek の1.3.x 系が同居できない。
依存するGem ruby_parser の必要バージョンに矛盾がでるみたい。
5. 諦めた所
flog は入れてはみたけども、Ruby1.9系でパースできないっていうエラーがでてるみたいで諦めた
flay は全体のスコアは 100 です。とはみたいにでるけど、どこ直していいのかJenkins上みてもログから読み取れないので使うのやめた。
6. これからやりたいこと
Shinya131/reek_viewer · GitHubなるものがあるので、それ使ってJenkins上でReekの結果を表示できるようにしたい。
Jenkins を使ってRailsプロジェクトでゴニョゴニョするまでの道のり その3
目標
- Github上からRailsプロジェクト取ってくる。
- ビルド(bundle install/update とか、rake db:migrate)する。
- メトリクス計測する。(reek, roodi)
- RSpec実行
- テストレポート・カバレッジレポート生成
- ビルド結果を通知
ビルド(bundle install/update とか、rake db:migrate)する。
export http_proxy='http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}/' bundle install --path vendor/bundler rake db:migrate
bundle install するために、proxyの設定が必要。
rake db:migrate を Rakeタスクプラグインから実行しようと思ったけど、
java.io.IOException: Cannot run program "rake" (in directory "/var/lib/jenkins/workspace/Sample"): java.io.IOException: error=2, No such file or directory
ってなる。パス通したのに…
ちなみに、rake は /usr/local/bin/rake をみている。
もうRakeプラグイン使うのやめて、シェルスクリプト内でやるようにした。