一年前くらいに自社サーバにJenkinsをいれた(yumしただけ)んだけど、放置していたので、ボチボチCIしないとってことで、社内のGitと連携することにしました。
とりあえずLaravelプロジェクトを連携してみます。
QuickStart
composerでプロジェクトを作成します。
>composer create-project laravel/laravel laravel_jenkins
できました!
Gitにいれます。今回はBacklogでやりました。
続けて、Jenkinsの設定をします。新規プロジェクト作成で、フリースタイル・プロジェクトのビルドを作成します。
ソースコード管理にGitを選択し、リポジトリと認証情報を設定して保存します。
ひとまず完成。
ビルドが問題なく実行されることを確認します。
ユニットテストを実行します。まずは、ローカルで実行してみました。
>phpunit Fatal error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\xampp\htdocs\laravel_jenkins\src\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1066くそー・・・
>composer exec phpunit PHPUnit 5.7.19 by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: 373 ms, Memory: 9.00MB OK (2 tests, 2 assertions)うごきました!
続いて、おなじみbuild.xmlをおきます。
<project name="laravel-jenkins" default="build">
<target name="phpunit">
<exec dir="./src/" executable="phpunit" failonerror="true">
<arg line="--colors tests" ></arg>
</exec>
</target>
<target name="build" depends="phpunit"></target>
</project>
失敗しました!
関連ライブラリをインストールしないとダメですね。
phpunit:
[exec] PHP Warning: require(/var/lib/jenkins/workspace/laravel_jenkins/src/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /var/lib/jenkins/workspace/laravel_jenkins/src/bootstrap/autoload.php on line 17
[exec] PHP Stack trace:
[exec] PHP 1. {main}() /usr/bin/phpunit:0
[exec] PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:50
[exec] PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:116
[exec] PHP 4. PHPUnit_TextUI_Command->handleArguments() /usr/share/php/PHPUnit/TextUI/Command.php:127
[exec] PHP 5. PHPUnit_TextUI_Command->handleBootstrap()
composerタスクを追加しました。(31行目でenvファイルのコピーも追加しました)
<project name="laravel-jenkins" default="build" basedir=".">
<property name="basedir" value="${project.basedir}" />
<property name="sourcedir" value="${basedir}/src"/>
<target name="build" depends="composer,copy-env-file,phpunit" />
<target name="composer" depends="composer-clean,composer-install,composer-update" />
<target name="composer-check">
<condition property="composer.lock.exist.in.gitignore">
<resourcecontains resource="${sourcedir}/.gitignore" substring="composer.lock" />
</condition>
</target>
<target name="composer-clean" depends="composer-check" if="composer.lock.exist.in.gitignore">
<delete file="${sourcedir}/composer.lock" />
</target>
<target name="composer-install" depends="composer-check" unless="composer.lock.exist.in.gitignore">
<echo>Installing dependencies</echo>
<exec executable="composer" failonerror="true">
<arg value="install" />
<arg value="-d=src" />
</exec>
</target>
<target name="composer-update" depends="composer-check" if="composer.lock.exist.in.gitignore">
<echo>Updating dependencies</echo>
<exec executable="composer" failonerror="true">
<arg value="update" />
<arg value="-d=src" />
</exec>
</target>
<target name="copy-env-file">
<copy file="${basedir}/deploy/laravel/.env" todir="${sourcedir}/"/>
</target>
<target name="phpunit">
<exec dir="${sourcedir}" executable="phpunit" failonerror="true">
<arg line="--colors tests" />
</exec>
</target>
</project>
テスト実行まで成功しました!
満足したので今日はここまで。





