Last active
March 19, 2018 04:52
-
-
Save vexus2/4460304 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Jenkins × PHP環境構築の巻 | |
■目的 | |
PHP環境に対応したJenkins設定を行い、 | |
コミットされる度にサーバ上でのPHPUnitの実行 及び | |
カバレッジレポート出力を"全自動"で行えるようにすること。 | |
1) PHP Pear系のインストール | |
sudo pear channel-discover pear.phing.info | |
sudo pear channel-discover pear.pdepend.org | |
sudo pear channel-discover pear.phpmd.org | |
sudo pear channel-discover pear.phpunit.de | |
sudo pear channel-discover components.ez.no | |
sudo pear channel-discover pear.symfony-project.com | |
sudo pear install phing/phing | |
sudo pear install pdepend/PHP_Depend | |
sudo pear install phpmd/PHP_PMD | |
sudo pear install phpunit/phpcpd | |
sudo pear install PHPDocumentor | |
pear install --alldeps phpunit/PHPUnit | |
○概要 | |
Phing (Java の Apache Ant というビルドツールの PHP クローン) | |
PHP_Depend (パッケージ間の依存性とかを調べられるツール) | |
PHPMD (PHPのコードのいけてない部分を探すツール) | |
PHPCPD (PHPのコードの重複部分を探すツール) | |
PHPDocumentor (コメントからPHPDocを出力するためのツール) | |
PHPUnit (PHP のテストツール) | |
2) Jenkinsプラグインのインストール | |
以下を入れる | |
phing (Phingを Jenkins からキックするためのプラグイン) | |
dry (PHPCPD の結果を jenkins から見るためのプラグイン。) | |
pmd (PHPMD の結果を jenkins から見るためのプラグイン。) | |
cloverphp (cloverというxdebugで出力されたカバレッジ情報を表示するためのツールのプラグイン。) | |
3) Jenkinsに新規ジョブ作成 | |
プロジェクト名→任意 | |
今回した設定 | |
・ソースコード管理→SVN | |
・チェックアウト方式→svn update | |
・SCMをポーリング→*/5 * * * * →5分ごとにSVNリポジトリ差分確認、差分があったらビルド実行 | |
・ビルド→Phingの呼び出し(これによりbuild.xmlの内容が実行される) | |
・ビルド後の処理→重複コード分析の集計、静的解析結果を集約、Clover PHP カバレッジレポートを集計、JUnitテスト結果の集計、Javadocの保存 | |
4) ビルド実行 | |
エラー→FATAL: Phingの実行に失敗しました。インストールしたPhingのいずれ1つを使用してジョブを設定する必要があるかもしれません。 | |
PHING_HOMEが設定出来ない(GUIから)→正しいパスを入れても、存在しないっていわれる | |
→シンボリックリンク貼って対応 | |
■コマンド | |
$ sudo ln -s /usr/local/bin/phing /usr/bin/phing | |
■参考 | |
http://twitter.com/#!/yanchi/status/133067015882678272 | |
5) 再度ビルド実行 | |
エラー→BUILD FAILED | |
exception 'Exception' with message 'PHPUnitTask depends on Xdebug being installed to gather code coverage information.' in | |
XDebug入ってないって。 | |
pecl(ピクルって読むらしい)でxdebug入れる | |
$ sudo pecl install xdebug | |
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so' | |
$ sudo vim /usr/local/lib/php.ini | |
最下部に以下を追記 | |
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so | |
apache再起動 | |
6) 再度ビルド実行 | |
エラー→Fatal error: Class 'XSLTProcessor' not found in /usr/local/lib/php/phing/tasks/ext/coverage/CoverageReportTransformer.php on line 109 | |
カバレッジレポートのXMLを生成するための使用するクラス。こいつがホント関門だった | |
対応:ソースコードから、xsl.soを作成して読み込ませる | |
$ cd $HOME | |
$ wget http://jp2.php.net/get/php-5.3.9.tar.gz/from/jp.php.net/mirror | |
$ tar -zxf php-5.3.9.tar.gz | |
$ cd php-5.3.9/ext/xsl | |
$ yum install autoconf | |
$ yum install libxslt-devel | |
$ phpize | |
$ ./configure --with-xsl | |
$ make | |
$ make install | |
php.iniに以下を追加 | |
extension=xsl.so | |
apache再起動 | |
→動いた。 | |
■その他tips | |
1) Jenkinsのジョブ判定について | |
$JENKINS_HOME/jobs/<job_name>/ というフォルダがあって、 | |
その下に config.xml というファイルがあればジョブと見なされる。 | |
ただし、ディレクトリ所有者はjenkinsユーザじゃないと読み込まれない。 | |
2) 各種テストケースが他ファイル(共通includeファイルやautoload設定ファイル等)に依存している場合、 | |
build.xml内のPHPUnitのオプションで事前実行ファイルを指定する。 | |
例: | |
<phpunit bootstrap="tests/prepare.php"> | |
<formatter type="xml" outfile="${outputDir}/phpunit.xml"/> | |
<batchtest> | |
<fileset dir="tests/application"> | |
<include name="**/*Test.php"/> | |
</fileset> | |
</batchtest> | |
</phpunit> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment