今や 継続インテグレーションは強みではなくなった [プログラマー現役続行] らしいですし、
PHPヤダヤダ言っててもしゃーないしで試してみました。
ちなみに強引に動かしてます。
用意した環境
- Cent0S6.3 64bit的な環境
主な参考サイト
Template for Jenkins Jobs for PHP Projects
c9s/phpbrew
Template for jenkins Jobs for PHP Project のリンク先に Integrating PHP Projects with Jenkinsなんて本がありますね。
2011/09 に出てたっぽいのですね。
うーむ、CIはもう常識なんですね、やばいなぁ…
jdkとかjenkinsはテキトーに入っている前提
jenkinsの導入はこの通りにyumで
phpbrew install
phpbrewのサイトのほぼ指示通りですねInstall phpbrew into system-wide environment の部分を参考にしています。
理由はjenkinsに無理やり使わせるためです
phpbrewで5.3.10を入れている理由は、phpbrew variants でサンプルで出てきたからという理由です。
皆さんお好きな環境でどうぞ。
+iconvしているのは、後々入れるphpmdやらphplocやらが使うからという理由です。
その他yumで入れているものは、カラの環境だと インストール時に怒られるから…という理由から入れています。
なお、自前でオプションを指定したい場合は「--」のあとに続けるとできます
主に Install phpbrew into system-wide environment 参考
# phpが全く入っていないのはダメ
yum install php php-xml
yum install --enablerepo=rpmforge re2c libmhash
curl -O https://raw.github.com/c9s/phpbrew/master/phpbrew
chmod +x phpbrew
cp phpbrew /usr/bin/phpbrew
phpbrew init
#pythonbrewが入れてくれるやつをパクってみた
cat << _EOS_ >> /etc/profile.d/phpbrew.sh
#begin-phpbrew
if [ -n "${BASH_VERSION:-}" -o -n "${ZSH_VERSION:-}" ] ; then
export PHPBREW_ROOT=/opt/phpbrew
source /opt/phpbrew/bashrc
fi
#end-phpbrew
_EOS_
mkdir /opt/phpbrew
cp /root/.phpbrew/bashrc /opt/phpbrew/bashrc
source /etc/bashrc
yum install bison-devel bison libxml2-devel libxslt-devel
phpbrew install php-5.3.10 +default +iconv
# 自分でオプションを指定する場合は
# phpbrew install php-5.3.10 -- --with… みたいな
# 完了したら phpbrew switch/use php-5.3.10
# Dateの設定をしておく
vim /opt/phpbrew/php/php-5.3.13/etc/php.ini
[Date]
date.timezone = "Asia/Tokyo"
phpbrew use php-5.3.10
yum install autoconf
pecl install xdebug
phpbrew enable xdebug
# xdebug.iniを書き換える
vim /opt/phpbrew/php/php-5.3.10/var/db/xdebug.ini
zend_extension=/opt/phpbrew/php/php-5.3.10/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
Template for Jenkins Jobs for PHP Projects とビミョーに違うところとか
まあ大体一緒です。phpdoxじゃなくてphpdoc入れているところとかですかね。(ppwが作るやつがphpdoc使っているし)
あとppwでプロジェクト作るから…とかが差異だったりとか
その他plugin入れたり、テンプレートプロジェクトを入れたりとかは
同じことしているので省略
Template for Jenkins Jobs for PHP Projects とビミョーに違うところ
pear config-set auto_discover 1
pear install pear.phpqatools.org/phpqatools
# phpdoxじゃなくて http://www.phpdoc.org/ を入れた
pear channel-discover pear.phpdoc.org
pear install phpdoc/phpDocumentor-alpha
# php project wizardも必要なら入れておく
# https://github.com/sebastianbergmann/php-project-wizard
pear install phpunit/ppw
jenkins先生に頑張っていただく
まずはプロジェクトを作ります。テンプレがあるので楽ですね。
Template for Jenkins Jobs for PHP Projects 様様です
さて、Antを実行と見せかけて下記のようにします。
無理やりphpbrewを使うためです。
antもシェル上で叩いていますが、これを分離してしまうと
せっかく無理やり認識させたphpbrewが使えないからです。
うーむ無理やりw
なお、使用しているAntはJenkins先生が自分でインストールしてくる奴のパスを叩いています。
一度はAntタスクを実行しないとインストールされませんので、その辺は適当に。
export PHPBREW_ROOT=/opt/phpbrew source /opt/phpbrew/bashrc phpbrew use php-5.3.10 $JENKINS_HOME/tools/Ant/1.8.4/bin/ant
publish HTML report もほんのちょびっとだけいじります
index.xhtml → index.html にするだけ。
実際上記の通り作ると、build/api 以下にそう作られていたから…以上の意味は無いです。
準備ができたらppwでプロジェクトを作ります。
別に自前でant用のbuild.xml書いてもいいですけど、メンドイですよね。
他にもMave for phpなんてのもあるし、
そもそも時代はGradleらしいです。
Ant使っている場合じゃねぇ(AAry
そこはとりあえず置いといて…
ppwがデフォルトで作成してくれる状態に超テキトーにソースを加えたものを実行してみました。
→ ここに置いときます
テストは通ってないし、警告は出るしで最低ですねw
常にJenkins先生を怒らせないような状態を保つようにすれば、
もしかしたらPHPもゴミクズのように言われない日が来るかもしれませんね。