jiska

i'm a PHPer.

Homebrewでインストールしたphp53とphp54を切り替える

という名のはてなブログにgistを貼り付けるてすと

See you next gathering

2012年3月24日に開催されたAgile Samurai Dojo Gathering 2012に参加しました。
原著者であるJonathan Rasmussonさんの基調講演から始まり監訳者の西村さんの講演に至るまでとてもとても濃度のこいイベントでした。

僕個人は2011年9月のアジャイルサムライ他流試合に引き続き当日スタッフとして参加できたことを光栄に感じています。
他流試合に参加したときのエントリーがはてダにあげてあります

さて、当日のことのふりかえりは様々な方がまとめていらっしゃるので僕個人はまとめません。

僕はJonathanに帰り際、「See you next Gathering, We well go to Canada.」と酔っ払いかつ拙い英語で伝えました。(ちゃんと伝わったかそもそも喋れていたか不安)
“アンタが書いてくれたアジャイルサムライを読んで俺らはこんなことやったんだぜ!”
と彼に恩返しをしたいのです。たとえば事例発表を彼の住む街へ乗り込んでやるなどのがいいかなと思ってます。
そのために次回以降もこの素晴らしいイベントの火種を燃やし続けて何かしらの価値を届けることができれば、できねばならぬ。

いまは単なる妄想ですが、いつか実現できるように考えています。

PHPUnit起動時のバージョン表示を消したい

自分用メモ。

PHPでのテスト駆動開発においてPHPUnitは大変便利でありどんどん使うべきですが、
たまにターミナルに出力されたテスト結果ログをいろいろ編集するときにPHPUnitのバージョン表示が邪魔だなぁと思うこともあります。

具体的にはこれです。

$ phpunit hogeTest.php
PHPUnit 3.6.7 by Sebastian Bergmann.

Configuration read from /home/jiska/Workspace/hoge/phpunit.xml

...I..

とりあえずPHPUnitのソースをいじることでこの表示を消したいと思います。
[PHPUnit]/TextUI/TestRunner.phpversionStringPrinted プロパティの初期値を TRUE に変更するだけです。

UbuntuPEARでインストールした場合、PHPUnit /usr/share/php/PHPUnit にファイルが配置されています。

$ sudo vi /usr/share/php/PHPUnit/TextUI/TestRunner.php
/**
  * @var boolean
  */
protected static $versionStringPrinted = FALSE;

これを TRUE に変更して保存します。

/**
  * @var boolean
  */
protected static $versionStringPrinted = TRUE;

これでコンソール表示もちょっとだけすっきりします。

$ phpunit hogeTest.php

...I..

余談

上記の編集を行うことでPHPUnitのバージョン出力そのものも表示されなくなってします。

$ phpunit --version
$ 

…だめじゃん。

Ubuntu ServerにJenkinsをセットアップしてGitレポジトリと連動するまでのまとめ

さくさく行きます。

前提条件

Jenkins, Gitレポジトリのあるサーバー共にUbuntu Server 11.10 (64bit) です。
Gitレポジトリの管理にはgitosisを使用します。
git clone, pullにはsshを使用するので公開鍵登録を行います。
sshのポートは標準の22ではなく10022を使用します。

Jenkinsのインストールとセットアップ

公式ページ ( http://pkg.jenkins-ci.org/debian/ ) を参考にしつつPPAを追加してapt-get installします。
Gitのプラグインも一緒にインストールします。

$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ echo "deb http://pkg.jenkins-ci.org/debian binary/" | sudo tee -a /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get instal jenkins
$ wget -O jenkins-cli.jar http://localhost:8080/jnlpJars/jenkins-cli.jar
$ java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin git
$ java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart
$ rm jenkins-cli.jar

インストールが終わるとjenkinsユーザーが作成されます。
jenkinsユーザーにGitレポジトリのクローン時に必要になるssh鍵やgitconfigの設定を行います。

$ sudo -u jenkins -H git config --global user.email "jenkins@jenkins-server"
$ sudo -u jenkins -H git config --global user.name "jenkins"
$ sudo -u jenkins -H ssh-keygen -t rsa -C jenkins@jenkins-server

/var/lib/jenkins/.ssh/id_rsa.pub がgitosisで必要になるのでコピーしておきます。
鍵の名前も変更しておきます。
作業しやすいように作業ユーザーにchownしておいてください。

$ sudo cp /var/lib/jenkins/.ssh/id_rsa.pub ~/jenkins@jenkins-server.pub

.ssh/configを編集してGitレポジトリサーバーのsshポートを登録します。

$ sudo -u jenkins vi /var/lib/jenkins/.ssh/config
Host git-server
  Port 10022

Gitレポジトリサーバーと通信するために一度known_hostsに追加する必要があるのでsshを試みます。接続する必要はないです。

$ sudo -u jenkins ssh git-server

(known_hostsに追加していいか聞かれるのでyesを答える)

Gitレポジトリの作成

gitosisを使ってアカウント管理とかレポジトリの管理をします。gitosisは便利です。
gitosisの説明や使い方は gitosisによるgitサーバーの管理 ( http://dora.bk.tsukuba.ac.jp/~takeuchi/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2Fgitosis%20%A4%CB%A4%E8%A4%EB%20git%20%A5%B5%A1%BC%A5%D0%A1%BC%A4%CE%B4%C9%CD%FD ) が参考になります。

gitosis-initで管理用のレポジトリを作ったところで作業を開始です。

$ git clone gitosis@git-server:gitosis-admin.git

gitosis-adminにJenkinsサーバーの公開鍵とユーザー情報を追加します。
Jenkinsがpushすることはない(あっても困る)ので読み取り専用権限でいいと思います。
そこでreadonlyグループを作成し、clone, pullができるGitレポジトリの名前を登録します。
サンプルではyourprojectとします。

$ cp jenkins@jenkins-server.pub gitosis-admin/keydir
$ vi gitosis-admin/gitosis.conf
[gitosis]

[group readonly]
members = jenkins@jenkins-server
readonly = yourproject

これでJenkinsからGitレポジトリへのアクセスができるようになりました。
gitosis@git-server:yourproject.git
でアクセスできるようになります。

Jenkinsにジョブを登録

Jenkinsのダッシュボードをブラウザで開き、新規ジョブ作成をします。

ソースコード管理システム で Git を選択し、レポジトリに gitosis@git-server:yourproject.git を設定すれば大丈夫です。
あとはそれぞれのプロジェクトにあった設定をしてください。

Enjoy!