phingのbuild.xmlの記法について
phingとは
phingはApache Antをベースに作らていて、Antでできるようなことをphpでもできるようにしてくれる。
phingを使うことで、単体テストツールであるphpunitやコードからAPI仕様を作れるphpdocを自動化することができる。Jenkins+phpによるCIにはこのphingが活躍する。
phingのbuild.xmlの書き方がよくわからん
こちらのサイトなどを参考したが、自分の不勉強もあり、
よくわからんところがいくつかあった。
PHP - Phing入門 ~基本的な使い方~ - Qiita
JenkinsでPHPプログラムをデバッグしてみよう!! | 株式会社スパイスワークス
build.xmlの説明をしてくれるブログはなかったので、
結局、公式のドキュメントにあたってわからないことを調べた。
https://www.phing.info/docs/stable/hlpdf/manual.pdf
以下に忘備録的に、xmlの設定を残しておく。
ここでは、phpunitとphpdocの自動化を行う。
<?xml version="1.0" encoding="utf-8" ?> <!-- basedirは基準となるパス。パスはbuild.xmlのあるパス defaultで最初に見に行くターゲットをbuildにする --> <project name="Project Jenkins" basedir="." default="build"> <!-- propertyは変数を格納するとこ $は変数--> <property name="basedir" value="." /> <property name="appdir" value="${basedir}/application" /> <property name="datadir" value="${basedir}/data" /> <property name="logdir" value="${datadir}/logs" /> <!-- buildターゲットは、dependsで他のターゲットに依存しており、左のターゲットから順に実行する --> <target name="build" depends="clean,prepare,phpdoc,phpunit"> </target> <!-- 既存フォルダ削除する処理 --> <target name="clean" description="clean"> <delete dir="${logdir}" /> <delete dir="${datadir}/phpdoc" /> <delete dir="reports" includeemptydirs="true" /> </target> <!-- レポートなどを格納するフォルダ作成する処理--> <target name="prepare" description="prepare"> <mkdir dir="${logdir}" /> <mkdir dir="${datadir}/phpdoc" /> <mkdir dir="reports" /> </target> <!-- phpunitの実行 https://www.phing.info/docs/stable/hlpdf/manual.pdfの書き方が公式--> <target name="phpunit"> <phpunit haltonfailure="false" printsummary="true" pharlocation="/usr/local/bin/phpunit"> <formatter todir="reports" type="xml" outfile="unitreport.xml" /> <batchtest> <fileset dir="jenkins/tests"> <include name="**/*Test.php" /> </fileset> </batchtest> </phpunit> </target> <!-- phpdocの実行 公式による専用のタグがあったが、executable属性からコマンドを実行するようにした--> <target name="phpdoc" description="Generate Application Documentation using PHPDocumentor2"> <!-- 公式による専用のタグがあったが動かないのでコメントアウト--> <!-- <phpdoc2 title = "API Documentation" destdir = "doc" template = "responsive-twig"> <fileset dir = "jenkins/src/classes"> <include name = "**/*.php" /> </fileset> </phpdoc2> コメントアウト --> <!-- executable属性からコマンドを実行するようにした--> <exec dir="${basedir}" executable="phpdoc" output="${logdir}/phpdoc.log"> <arg line="run" /> <arg line="-t ${datadir}/phpdoc" /> <arg line="-d jenkins/src/classes" /> <arg line="-p" /> </exec> </target> </project>