Jenkinsをアップデートしたらジョブが消えた。。だけど無事復活!

Jenkinsを1.516から1.526にアップデートし、プラグインもアップデートし たらRuby関連のジョブが消えました。。 小一時間悩んで管理画面からシステムログを見たら、 Failed Loading plugin ruby-runtime とのエラーメッセージ。このプラグインをインストールしたら直りました。 なぜ急に必要になった?と思い、/var/log/jenkins/jenkins.logを見たら、 rbenvとrvmプラグインが要求していました。 2013/08/10 11:11:01 jenkins.InitReactorRunner$1 onTaskFailed 致命的: Failed Loading plugin rbenv java.io.IOException: Dependency ruby-runtime (0.10) doesn’t exist 2013/08/10 11:11:01 jenkins.InitReactorRunner$1 onTaskFailed 致命的: Failed Loading plugin rvm java.io.IOException: Dependency ruby-runtime (0.7) doesn’t exist プラグインのページを見ると、確かにそう書いてあります。 https://wiki.jenkins-ci.org/display/JENKINS/Rbenv+Plugin https://wiki.jenkins-ci.org/display/JENKINS/RVM+Plugin 最初のプラグインアップデートで、rbenvもrvmもアップデートされなかっ たようなので(※)、Jenkinsがエラーを正しく処理してジョブが消えたのか もしれません。 ※ どのプラグインをアップデートしたかはログに書かれないようなので、 確定ではないですが。 しかし、依存関係が出来たのに、なぜruby-runtimeがインストールされな かったのだろう。。 結論: ログ大事

2013-08-10 (Sat) · masutaka

Jenkins-CLI使わずに、リポジトリの変更をプッシュ通知する方法がやっと分かった

git push したら、すぐにテストを実行して欲しいだけなんです。 もう、ポーリング [2011-12-30-5] で新しい commit があるかチェック するのは嫌なんです。 いや〜、Jenkins-CLI でやろうとしてかなりハマりました。 loading... loading... loading... 初心に返ってJenkins実践入門 読みましたが、Git には特に触れられておらず…。 どうせこれも Jenkins-CLI のススメだろうと WEB+DB PRESS Vol.67 の 17 ページ目のコラムの URL を読んでみた。 「あれ? Git プラグインだけでできるの?」 試しに git push の後に Web ブラウザで http://example.com:8080/git/notifyCommit?url=/home/foo/hoge.git にアクセスしたら、ビルドが始まったじゃありませんか! あとは /home/foo/hoge.git/hooks/post-receive に以下を追加して終了。 curl 'http://example.com:8080/git/notifyCommit?url=/home/foo/hoge.git' なんか矛盾しますが、「SCMをポーリング」にはチェックを入れる必要があ ります。スケジュールは空っぽで OK です。 あと、今回のもうひとつの素晴らしい点は、認証が必要なシステムでも使 えることにあります。 長年のつっかえがやっと取れました! Jenkins さん、dis ってすみませんでした。 Subversion はこの方法で出来るみたいです。

2012-06-17 (Sun) · masutaka

{Jenkins x CakePHP2 (6/6)} 他にインストールしたプラグイン

※ 詳細情報は「Jenkinsの管理」>「プラグインの管理」から辿れる、各プ ラグインのリンク先を参照して下さい。 Emotional Jenkins Plugin これはインストールした方がよいでしょう。そしてテストを失敗させましょうw 各プロジェクトの設定で ON/OFF できます。 IRC Plugin 設定すると、指定した channel に Jenkins さんが常駐します。ビルド結 果を IRC で通知してくれるだけでなく、IRC から Jenkins を実行できた りもします。 私の設定は以下のとおり。 Hostname chat.freenode.net Port 6667 Channels Name #example Nickname jenkinsbot Command prefix jenkinsbot: (高度な設定)Use /notice command チェックを入れる Hostname と Port と Channels Name を設定するだけで動くはずですが、 私の環境では Nickname が初期値の jenkins-bot だと、Channels に join してくれませんでした。なので試行錯誤の結果、微妙に変えました。 Command prefix は IRC の mentions っぽくしました。なんでも良いと思 います。 Use /notice command もチェックを入れた方がよいと思います。IRC の /notice コマンドを使って通知します。...

2011-12-30 (Fri) · masutaka

{Jenkins x CakePHP2 (5/6)} Jenkins を自動実行する

「リモートからビルド (例: スクリプトから)」がうまくいかないので、 とりあえず「SCMをポーリング」にしました。 10 分おきにポーリングです。 */10 * * * * Jenkins は良くできたツールなんだけど、微妙に設定が効かないことがあ るよなあ。単にまだ自分に馴染んでいないだけなのか。

2011-12-30 (Fri) · masutaka

{Jenkins x CakePHP2 (4/6)} Jenkins から PHPUnit を実行する

CakePHP2 から、奨励単体テストツールが SimpleTest から PHPUnit になっ たのは周知のとおり。http://example.com/cakephp/test.php などから単 体テストができるようになり、カバレッジ率も測定できる環境が整ったら、 Jenkins でも実行したいところ。 コマンドラインから単体テストを実行する まずはコマンドラインからテストを実行できることを確認する。 % cd app % mkdir -p results % ../lib/Cake/Console/cake testsuite --log-junit results/phpunit.xml --coverage-clover results/coverage.xml app AllTests 上の例では、Controller や Model を含めた全てのテストケースを実行す る app/Test/Case/AllTestsTest.php を実行している。 このとき PHP Fatal error: Class ‘DOMDocument’ not found in /usr/share/pear/PHPUnit/Util/Log/JUnit.php on line 135 なんていうエラーが起きたら、configure で –with-dom を有効にした PHP がインストールされていない 。remi リポジトリからインストールする と良い(詳細は割愛)。 % sudo yum --enablerepo=remi,epel,rpmforge,rpmforge-extras,rpmforge-testing install php-xml ここまで出来たらあとは簡単。Jenkins に設定するだけ。 Jenkins側の設定 トップの「Jenkinsの管理」>「プラグインの管理」から、 results/coverage.xml を解析するためのプラグイン、Clover PHP Plugin...

2011-12-30 (Fri) · masutaka

{Jenkins x CakePHP2 (3/6)} Jenkins からコーディング規約をチェックする

手っ取り早く使ってみたかったので、最初に Jenkins からコーディング規 約チェック出来るようにしてみた。単体テストだと、最初にテストコード を書かなくちゃいけないからね。 PHP_CodeSniffer のインストール インストールすると、phpcs コマンドを使えるようになる。 pear コマンドでインストール出来るが、 % sudo pear install PHP_CodeSniffer エラーが発生してインストールできなかったので、 downloading PHP_CodeSniffer-1.3.2.tgz ... Starting to download PHP_CodeSniffer-1.3.2.tgz (328,845 bytes) ......................done: 328,845 bytes PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 23378 bytes) in /usr/share/pear/PEAR.php on line 252 PHP Stack trace: PHP 1. {main}() /usr/share/pear/pearcmd.php:0 PHP 2. PEAR_Command_Common->run() /usr/share/pear/pearcmd.php:305 PHP 3. PEAR_Command_Install->doInstall() /usr/share/pear/PEAR/Command/Common.php:271 PHP 4. PEAR_Installer->install() /usr/share/pear/PEAR/Command/Install.php:708 PHP 5. PEAR_Installer->_installFile2() /usr/share/pear/PEAR/Installer....

2011-12-30 (Fri) · masutaka

{Jenkins x CakePHP2 (2/6)} Jenkins の認証設定

今回採用したセキュリティポリシー ログインしないとアクセス出来ないようにする。 管理者が手動でアカウントを作成すると、ユーザーがサインアップできる。 第3者は勝手にサインアップできない。 設定方法 「Jenkinsの管理」>「システムの設定」>「セキュリティを有効化」にチェック 「アクセス制御」>「ユーザー情報」>「Jenkinsのユーザーデータベース」にチェック 「ユーザーにサインアップを許可」のチェックを外す。 「アクセス制御」>「権限管理」>「行列による権限設定」にチェック。 「追加するユーザー/グループ」から masutaka を追加。全アクセス権を付与。 トップに戻り masutaka のサインアップをすると、ログイン出来るようになる。

2011-12-30 (Fri) · masutaka

{Jenkins x CakePHP2 (1/6)} Jenkins のインストール方法

CakePHP-2.0.4 で継続的インテグレーション(CI) ができる環境を構築する ため、Jenkins をインストールすることにした。 ネット上を探し回ったんだけど、まだ Jenkins x CakePHP2 の情報はまと まってないみたい。毎度のことながら途中何度も何度もハマり、設定して はアンインストールし、設定してはアンインストールしを 7〜8 回はやっ たと思う。同じように困っている人と、将来の自分のために構築メモを残 すことにする。全 6 回。 Jenkins のバージョンは 1.445、CentOS のバージョンは 5.6。 Jenkins をインストール&起動した。Jenkins 用のリポジトリを yum の リポジトリリストに追加して、yum install するだけ。 % sudo yum install java-1.6.0-openjdk % sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo % sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key % sudo yum install jenkins % sudo /sbin/service jenkins start http://example.com:8080 にアクセスできるようになった。設定ファイル や workspace は /var/lib/jenkins に、ログは /var/log/jenkins に作ら れる。 設定やビルド結果は xml で保存され、MySQL とかは使わないので、気楽と...

2011-12-30 (Fri) · masutaka