LoginSignup
11
14

More than 5 years have passed since last update.

CentOS (Vagrant) × JenkinsでPHPUnit実行

Last updated at Posted at 2015-05-24

JenkinsでPHPUnitを動かすまでなかなか手こずったのでメモ
JenkinsからGitHub上のプロジェクトを取得しPHPUnitを実行します。

環境

VagrantにJenkinsをセットアップ

バージョンは変えましたがこちらの記事を元に環境設定します。

vagrant up時にエラーが発生した場合はこちらを参考

CentOS7ではiptablesがfirewalldに変わっているので以下のコマンドでポートを解放します。

firewall-cmd --add-port=8080/tcp --zone=public --permanent

Jenkins に plugin 追加

  • Git Plugin
  • Phing Plugin

Jenkins に必要な設定を追加

Git

今回はjenkinsからGithubへアクセスできるように直接jenkinsサーバへ設定を追加します。

cd /var/lib/jenkins
sudo mkdir .ssh
sudo vi .ssh/id_rsa
# Github への秘密鍵を追加
# 権限変更
sudo chown -R jenkins:jenkins .ssh/
sudo chmod 400 .ssh/id_rsa
# アクセス確認
sudo -u jenkins ssh -T git@github.com
Hi taisa007! You've successfully

PHP

Jenkins へジョブを追加

参考ですが以下のように設定しました。

build.xml
<?xml version='1.0' encoding='UTF-8'?>
<project>
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties/>
  <scm class="hudson.plugins.git.GitSCM" plugin="git@2.3.5">
    <configVersion>2</configVersion>
    <userRemoteConfigs>
      <hudson.plugins.git.UserRemoteConfig>
        <url>git@github.com:taisa007/phpunit.git</url>
      </hudson.plugins.git.UserRemoteConfig>
    </userRemoteConfigs>
    <branches>
      <hudson.plugins.git.BranchSpec>
        <name>*/master</name>
      </hudson.plugins.git.BranchSpec>
    </branches>
    <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
    <submoduleCfg class="list"/>
    <extensions/>
  </scm>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers>
    <hudson.triggers.SCMTrigger>
      <spec>00 * * * *</spec>
      <ignorePostCommitHooks>false</ignorePostCommitHooks>
    </hudson.triggers.SCMTrigger>
  </triggers>
  <concurrentBuild>false</concurrentBuild>
  <builders>
    <hudson.plugins.phing.PhingBuilder plugin="phing@0.13.3">
      <targets>test</targets>
      <useModuleRoot>true</useModuleRoot>
    </hudson.plugins.phing.PhingBuilder>
  </builders>
  <publishers/>
  <buildWrappers/>
</project>

Phing コマンドを実行してみる

jenkins 上で実行されるのは、以下のコマンドを実行しているのとほぼ同じなので、上手くいかない場合は一度 jenkins サーバ上で直接 phing コマンドを実行してみましょう。

cd /var/lib/jenkins/jobs/phpunit/workspace/
phing 
Buildfile: /var/lib/jenkins/jobs/phpunit/workspace/build.xml

Demo > test:

  [phpunit] Total tests run: 1, Failures: 0, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.00897 s

BUILD FINISHED

Total time: 0.1503 seconds

テストが実行され成功しました。

また、build.xml は、こちらを元に設定を一部変更して利用しています。

とりあえずテスト結果を集計して表示する

Phing の設定を report に変更し、ビルド後の処理の追加で、JUnitテスト結果の集計から設定を追加すると、ビルド結果を画面で確認することができます。

<?xml version='1.0' encoding='UTF-8'?>
<project>
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties/>
  <scm class="hudson.plugins.git.GitSCM" plugin="git@2.3.5">
    <configVersion>2</configVersion>
    <userRemoteConfigs>
      <hudson.plugins.git.UserRemoteConfig>
        <url>git@github.com:taisa007/phpunit.git</url>
      </hudson.plugins.git.UserRemoteConfig>
    </userRemoteConfigs>
    <branches>
      <hudson.plugins.git.BranchSpec>
        <name>*/master</name>
      </hudson.plugins.git.BranchSpec>
    </branches>
    <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
    <submoduleCfg class="list"/>
    <extensions/>
  </scm>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers>
    <hudson.triggers.SCMTrigger>
      <spec>00 * * * *</spec>
      <ignorePostCommitHooks>false</ignorePostCommitHooks>
    </hudson.triggers.SCMTrigger>
  </triggers>
  <concurrentBuild>false</concurrentBuild>
  <builders>
    <hudson.plugins.phing.PhingBuilder plugin="phing@0.13.3">
      <targets>report</targets>
      <useModuleRoot>true</useModuleRoot>
    </hudson.plugins.phing.PhingBuilder>
  </builders>
  <publishers>
    <hudson.tasks.junit.JUnitResultArchiver plugin="junit@1.2-beta-4">
      <testResults>reports/*.xml</testResults>
      <keepLongStdio>false</keepLongStdio>
      <testDataPublishers/>
      <healthScaleFactor>1.0</healthScaleFactor>
    </hudson.tasks.junit.JUnitResultArchiver>
  </publishers>
  <buildWrappers/>
</project>
11
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
14