2012年12月16日日曜日

phpbrew + Template for Jenkins Jobs for PHP Projects 的なもの

そろそろPHP通算歴が半年くらいになっちゃうんじゃないかなぁ…

今や 継続インテグレーションは強みではなくなった [プログラマー現役続行] らしいですし、
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で入れているものは、カラの環境だと インストール時に怒られるから…という理由から入れています。

なお、自前でオプションを指定したい場合は「--」のあとに続けるとできます

phpbrew install

主に 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
view raw 2.md hosted with ❤ by GitHub



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
view raw 3.md hosted with ❤ by GitHub




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もゴミクズのように言われない日が来るかもしれませんね。







まあそんな日は来ないだろうけどな





1 件のコメント: