2011-12 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
※ 詳細情報は「Jenkinsの管理」>「プラグインの管理」から辿れる、各プ
ラグインのリンク先を参照して下さい。
これはインストールした方がよいでしょう。そしてテストを失敗させましょうw
各プロジェクトの設定で ON/OFF できます。
設定すると、指定した channel に Jenkins さんが常駐します。ビルド結
果を IRC で通知してくれるだけでなく、IRC から Jenkins を実行できた
りもします。
私の設定は以下のとおり。
Hostname | chat.freenode.net |
Port | 6667 |
Channels Name | #example |
Nickname | jenkinsbot |
Command prefix | jenkinsbot: |
(高度な設定)Use /notice command | チェックを入れる |
プロジェクトのトップページに Redmine のリンクが現れます。
コミットメッセージの refs #100 とかが概チケットへのリンクになります。
「リモートからビルド (例: スクリプトから)」がうまくいかないので、
とりあえず「SCMをポーリング」にしました。
10 分おきにポーリングです。
*/10 * * * *
Jenkins は良くできたツールなんだけど、微妙に設定が効かないことがあ
るよなあ。単にまだ自分に馴染んでいないだけなのか。
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の管理」>「プラグインの管理」から、
results/coverage.xml を解析するためのプラグイン、Clover PHP Plugin
をインストールする。
続けて、プロジェクトに前述のコマンドを設定する。
1. プロジェクト(例:hoge)のトップページから「設定」をクリック。
2. 「ビルド」>「ビルド手順の追加」>「シェルの実行」をクリック。
以下を設定する。
cd ${WORKSPACE}/app
mkdir -p results
../lib/Cake/Console/cake testsuite --log-junit results/phpunit.xml --coverage-clover results/coverage.xml app AllTests
3. 「ビルド後の処理」>「Clover PHP カバレッジレポートを集計」をクリック。
「Clover XMLパス」に app/results/coverage.xml を指定する。
4. 同様に「JUnitテスト結果の集計」をクリック。
「テスト結果XML」に app/results/phpunit.xml を指定する。
あとはビルドするだけ。エラーが発生してしまったら「コンソール出力」
を見ると、原因が大体分かります。
参考 URL:
Fatal error: Class ‘DOMDocument’ not foundと出たら: PHPの種 ブログ
手っ取り早く使ってみたかったので、最初に Jenkins からコーディング規
約チェック出来るようにしてみた。単体テストだと、最初にテストコード
を書かなくちゃいけないからね。
インストールすると、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.php:1406
PHP 6. PEAR->isError() /usr/share/pear/PEAR/Installer.php:600
PHP 7. is_a() /usr/share/pear/PEAR.php:252
/etc/php.ini をこのように修正した。
memory_limit = 16M
↓
memory_limit = 32M
※ 以降のどこの操作かは忘れましたが、同じ現象が発生したため、私の環
境では最終的に 256M に落ち着きました。
PHP_CodeSniffer をインストールできた。
% phpcs --version
PHP_CodeSniffer version 1.3.2 (stable) by Squiz Pty Ltd. (http://www.squiz.net)
% phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, Squiz and Zend
CakePHP 用の規約は同封されていないので、別途インストールした。
% cd ~/tmp
% git clone git://github.com/jrbasso/CodeSniffer_CakePHP.git
% cd /usr/lib/php/pear/PHP/CodeSniffer/Standards
% sudo cp -r ~masutaka/tmp/CodeSniffer_CakePHP CakePHP
無事追加された。
% phpcs -i
The installed coding standards are CakePHP, MySource, PEAR, PHPCS, Squiz and Zend
app/controllers 以下とかでチェックできるようになった。
% phpcs --report=summary --report-checkstyle=phpcs.xml --standard=CakePHP --extensions=php .
1. トップの「Jenkinsの管理」>「プラグインの管理」をクリックする。
2. 「利用可能」タブをクリックし、Git Plugin と Checkstyle Plugin を
選択し、インストールする。
1. トップから「新規ジョブ作成」をクリックする。
2. 「ジョブ名(要はプロジェクト名)」に適当な名前(例:hoge)を指定する。
/var/lib/jenkins/workspace 以下に同じ名前のディレクトリが作られるの
で英語名が良い。
3. 「フリースタイル・プロジェクトのビルド」を選択し、OK をクリック。
4. 「ソースコード管理システム」の Git を選択。Repository URL を指定
する(例:/home/foo/hoge.git)。
1. そのまま同じ設定画面の「ビルド」>「ビルド手順の追加」>「シェルの
実行」をクリック。Controller と Model 以下の .php ファイルを対象と
したい場合は、以下を設定する。
cd ${WORKSPACE}/app
mkdir -p results
find Controller Model -type f -name "*.php" ! -name AppController.php -print0 | \
xargs -0 phpcs --report=summary --report-checkstyle=results/phpcs.xml --standard=CakePHP --extensions=php || id
※ 1つでもエラーがあるとビルド失敗だと判断されてしまうので、この例
では最後に id コマンドを実行して、常にビルドが成功するようにしている。
2. 「ビルド後の処理」>「CheckStyle警告の集計」をクリック。「集計す
るファイル」に app/results/phpcs.xml を指定する。
あとはビルドを実行するだけ。警告出まくりだけど、Jenkins から
CakePHP コーディング規約をチェック出来た。
参考 URL:
CakePHPのコーディング規約違反をPHP_CodeSnifferでチェックする #CakephpAdvent2011 : candycane development blog
ログインしないとアクセス出来ないようにする。
管理者が手動でアカウントを作成すると、ユーザーがサインアップできる。
第3者は勝手にサインアップできない。
「Jenkinsの管理」>「システムの設定」>「セキュリティを有効化」にチェック
「アクセス制御」>「ユーザー情報」>「Jenkinsのユーザーデータベース」にチェック
「ユーザーにサインアップを許可」のチェックを外す。
「アクセス制御」>「権限管理」>「行列による権限設定」にチェック。
「追加するユーザー/グループ」から masutaka を追加。全アクセス権を付与。
トップに戻り masutaka のサインアップをすると、ログイン出来るようになる。
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 とかは使わないので、気楽と
言えば気楽。
そして、ここまでは簡単。
Emacs Advent Calendar jp: 2011 の 17 日目です。16 日目は、@asudofu
さんの点数付けの導入でタスク管理を楽しくする[Emacs拡張]でした。
Emacs Advent Calendar jp には初めて参加します。Emacs は 2000 年から
使っていますが [2009-06-26-2]、あんまり凝ったことはしていません。な
ので、今回は私の .emacs から良さそうな設定を 3 つ紹介します。
こんな感じに今日変更したファイルの日時に色が付きます。なかなか便利
です。
※ 意味もなく、`s' でファイルを時間順に並べ替えるのも好きです。`s'
で元に戻ります。
元々 blankspace > emacs > dired にあった設定なので、ご存知の方も多
いのではないでしょうか。今の私のコードはこのようになっていました。
日付が "12 15" でも "Dec 15" でも色が付くようになっています。
Emacs-23.1 からフォントを動的に大きくしたり小さくしたり出来るように
なりました。等幅フォントでは出来ないかもしれません。
M-x text-scale-adjust の後に `+' するだけでフォントが大きくなります。
`-' で小さくなります。`0' で元に戻ります。
等倍
5回+
10回+
私は C-q C-a に割り当てて、何か行き詰まると大きくしたり小さくしたり
しています。
Mac な方は、フォントの設定は Cocoa Emacs のフォント設定についてがてっ
ぱんです。
これも使っている人は多いと思います。M-x anything-hatena-bookmark で
自分のはてブを検索できます。これを使い始めてから、私のはてブの利用
率が急上昇しました。
M-x anything-hatena-bookmark -> emacs したところ
導入は少し面倒です。
1. migemo をインストールする。(Mac な方は [2011-10-10-1] が参考になるかも)
2. anything.el をインストールする。
3. anything-hatena-bookmark.el をインストールする。
3 はリポジトリが変わっていました。
% git clone git://github.com/k1LoW/anything-hatena-bookmark.git
M-x anything-hatena-bookmark-get-dump で自分のはてブのキャッシュファ
イル ~/.hatenabookmark を作成できます。でも重いので、シェルスクリプ
ト版を使うと良いでしょう。
自分のはてなブックマークを検索するanything-hatena-bookmark.elのデータ更新用シェルスクリプト - aki77の日記
svn で取得するのが簡単です。
% svn co http://svn.coderepos.org/share/lang/shellscript/misc anything-hatena-bookmark-get-dump
Mac な方は、GNU 版の sed が必要です。私は 0:30, 3:30,.. 23:30 のよ
うに 3 時間間隔で実行するように crontab に設定しています。
30 0-23/3 * * * PATH=/usr/local/bin:$PATH SED=gsed LANG=ja_JP.UTF-8 $HOME/bin/anything-hatena-bookmark-get-dump masutaka26
※1 GNU sed は Homebrew でインストールしました。
※2 cron で実行する場合は環境変数 LANG の設定が必要です。
以上のように少々面倒ですが、一度設定すれば快適はてブ生活を送ること
が出来るので、是非導入すべきでしょう。
今回久しぶりに自分の .emacs を最初から最後まで読みましたが、結構し
んどいですね(1694行)。init-loader.el のような分割は好きではないので、
アウトラインモードで管理したいところです。標準の
outline-minor-mode を emacs-lisp-mode で使うと ;;; が * に相当する
ようですが、あまり使い勝手がよろしくありません。org-minor-mode って
ないですかね?
明日 18 日目は、@Oh_CanNotAngel さんです。
Opera はマイナーなブラウザなのか、うまく見られないサイトがいくつか
ありました。User-agent と HTTP Accept Language をカスタマイズすれば
なんとか大丈夫なようです。ただし、後者は全てのサイトに影響するので、
少し注意が必要です。
http://jp.techcrunch.com/ にアクセスすると、
http://m.jp.techcrunch.com/ に飛ばされてしまう。Opera はモバイル機
器で多く使われているようなので、jp.techcrunch.com が適当に判断して
しまっているようだ。
http://m.jp.techcrunch.com/ に飛ばされた状態で右クリック > サイトご
との設定を編集 > 一般設定タブに進む。サイトに jp.techcrunch.com を
入力。
同様に右クリック > サイトごとの設定を編集 > ネットワークタブに進む。
ブラウザーの識別を「完全に Firefox として認識させる」にする。
ログインしようとすると、以下のエラーページに飛ばされる。
アドレスバーに opera:config と打ち、Enter を押下。
Network > HTTP Accept Language に進み、
ja,en;q=0.9,en-US;q=0.8,fr;q=0.7,de;q=0.6,es;q=0.5,it;q=0.4,pt;q=0.3,pt-PT;q=0.2,nl;q=0.1,sv;q=0.1,nb;q=0.1,da;q=0.1,fi;q=0.1,ru;q=0.1,pl;q=0.1,zh-CN;q=0.1,zh-TW;q=0.1,ko;q=0.1,ar;q=0.1,cs;q=0.1,hu;q=0.1,tr;q=0.1
から
,zh-CN;q=0.1,zh-TW;q=0.1,ko;q=0.1
を削除する。
天ぷら! YAKUZA! NINJA! そして スーパー遺族!
もう何も言うことはありません。
2007 年の B 級スプラッター映画。日本では公開されてないとのこと。
ようやく観れたわ。てか、さっさと借りれば良かった。
予告編はこれ。本編はこれより 200% グロい。
小飼弾氏も町山智浩氏も大絶賛です。
404 Blog Not Found:紹介 - 片腕マシンガール
女子高生にマシンガンつけて忍者ヤクザと闘わせろ! - ベイエリア在住町山智浩アメリカ日記
オフィスでみんなで観ようかと思ったけど、グロすぎるので躊躇している
ところ。メシ時避ければ良いのかな?
全体的にみんなドスが効いた良い声をしていました。全てが良い意味でツッ
コミどころ満載。監督が良い仕事をしている。体張ってたし。。。
作中で片腕マシンガンを作った石川ゆうやさんは新宿ゴールデン街「ダー
リン」の店主だそうです。是非行ってみたい。
YAKUZA の人は「プロジェクトA」の海賊のボスと似てる。
参考情報: Wikipedia - 片腕マシンガール
※ この記事は = MewでiCloudのメールを読み書き - ぺっくブログミラー
@peccul への mention です。
@peccul さんの記事のとおり、Mew で case を設定すると複数アカウント
を切り替えることが出来ます。さらに、自動的に切り替えることも出来ます。
pooh@example.com から来たメールへの返信で、case に example を使いた
い時は、このように設定します(mew-case-guess-when-replied-alist の書
式は mew-refile-guess-alist と同じです)。
;; 返信時(a,A)にケースを自動的に設定する。 (setq mew-case-guess-when-replied-alist '(("\\(To\\|Cc\\):" ("pooh@example\\.com" "example"))))
新規作成や転送の時は mew-case-guess-alist に設定します。でも普通は
To: や Cc: は空なので、推測に必要な情報がありません。
そこで登場するのが mew-ask-to と mew-ask-cc です。以下のように設定
すれば、返信の時と同じように case が自動的に切り替わります。
;; 草稿を作る時(w,f,F)、最初に To: と Cc: を聞かれる。 (setq mew-ask-to t mew-ask-cc t) ;; 草稿を作る時(w,f,F)や、再編集時(E)にケースを自動的に設定する。 (setq mew-case-guess-alist '(("\\(To\\|Cc\\):" ("pooh@example\\.com" "example"))))
mew-case-guess-alist と mew-case-guess-when-replied-alist について
は、Info の Customize > config にさらりと書いてあります。
池田信夫さんのメルマガで連載されていた小説の漫画版。まあまあ面白かっ
た。日本が財政破綻したらどうなるのか、私のように経済に疎い人にも想
像できる内容に仕上がっている。
漫画としては、もっと少し練った方が良かった。というのも小説をそのま
ま漫画化した感じで、全体的にメリハリがない(和間さんのところがある意
味クライマックス?w)。小泉さんのキャラ設定は不十分というか、設定さ
れていない。
次は藤沢数希さんの「日本人がグローバル資本主義を生き抜くための経済
学入門 もう代案はありません」を読む予定(もう読み始めているけど)。
その名の通り、Jenkins の入門書。Jenkins で出来ることを知っておくに
は良い本。そんなに濃い内容ではないので、時間をかけずにさっと読めた。
逆に、濃い情報を期待して読むと期待はずれだと思う。Subversion の説明
なんていらないし、Java 以外の言語を使っている人にとって、Ant とか
JUnit の説明もいらない。
まあでも、Jenkins は yum で簡単にインストール出来ることが分かったし、
Selenium というテストツールを使えば、Web ブラウザからの操作を自動化
できることも分かったので、私には良い本だった。
2011-12 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31