###Jenkinsでcomposerインストールせずにphpmdを使いたい
centOS7環境でJenkinsを中心にCI環境を作ろうとしています。
ジョブを作成しビルドするとJenkinsのワークスペース配下に設置した
phingのbuild.xmlが連動しphpunitが動くようになりましたが
phpmdらのインスペクターライブラリが動きません。
直接実行ファイルを取得、権限付与して
動かしているのが原因だと思います。
念のためcomposerインストールすると動きましたが、
今回composer.jsonがプロジェクトの都合で使えません
ここに質問したいことを詳細に書いてください
composerインストールせずにphpmdをインストールしjenkins(phing)と連動させる方法を教えて下さい。
###発生している問題・エラーメッセージ
ユーザーuser userが実行 ビルドします。 ワークスペース: /var/lib/jenkins/workspace/phing looking for '/var/lib/jenkins/workspace/phing/build.xml' ... '/var/lib/jenkins/workspace/phing' をワーキングディレクトリとして使用します。 [phing] $ phing -buildfile /var/lib/jenkins/workspace/phing/build.xml -logger phing.listener.DefaultLogger Buildfile: /var/lib/jenkins/workspace/phing/build.xml jenkins_phing > prepare: [echo] 初期設定 [delete] Deleting directory /var/lib/jenkins/workspace/phing/build [mkdir] Created dir: /var/lib/jenkins/workspace/phing/build jenkins_phing > phpunit: [phpunit] Total tests run: 4, Failures: 1, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.00973 s jenkins_phing > phpmd: BUILD FAILED /var/lib/jenkins/workspace/phing/build.xml:36:24: /var/lib/jenkins/workspace/phing/build.xml:36:24: PHPMDTask depends on PHPMD being installed and on include_path or listed in pharLocation. Total time: 0.2116 seconds Build step 'Phingの呼び出し' marked build as failure テスト結果を保存中 Finished: FAILURE
###該当のソースコード
ファイル構成 vagrant:/var/lib/jenkins/workspace/phing $ ll 合計 4.0K drwxr-xr-x 2 jenkins jenkins 6 8月 31 15:55 build/ -rw-r--r-- 1 jenkins jenkins 3.5K 8月 31 15:44 build.xml drwxr-xr-x 2 jenkins jenkins 24 8月 31 15:55 reports/ drwxr-xr-x 2 jenkins jenkins 129 8月 31 15:22 tests/ vagrant:/var/lib/jenkins/workspace/phing $ pwd /var/lib/jenkins/workspace/phing
build.xml <?xml version="1.0" encoding="UTF-8"?> <!-- jenkins実行時 引数がない場合はdefaultの"build"が実行される --> <project name="jenkins_phing" default="build"> <!-- 変数設定 --> <property name="outputDir" value="./reports/" override="false"/> <!-- 初期設定 --> <target name="prepare"> <echo msg="初期設定"/> <mkdir dir="./build"/> </target> <!-- 設定 phpunit --> <target name="phpunit"> <phpunit haltonfailure="false" printsummary="true" pharlocation="/usr/local/bin/phpunit"> <!-- 結果をXMLでunitreport.xmlとして出力 --> <formatter todir="${outputDir}" type="xml" outfile="phpunit.xml"/> <batchtest> <!-- 対象ディレクトリをtests下に設定 --> <fileset dir="tests"> <!-- 対象ファイルの設定 --> <include name="**/*TEST.php"/> <!-- vendorsディレクトリ下を対象外にする --> <exclude name="vendors/"/> </fileset> </batchtest> </phpunit> </target> <!-- 設定 phpmd --> <target name="phpmd"> <!-- 設定 ルール --> <phpmd rulesets="codesize,controversial,design,naming,unusedcode"> <!-- 結果をXMLでphpmd.xmlとして出力 --> <formatter type="xml" outfile="${outputDir}/phpmd.xml"/> <!-- 対象ディレクトリをtests下に設定 --> <fileset dir="tests"> <!-- phpファイルのみを対象にする --> <include name="**/*.php"/> <!-- vendorsディレクトリ下を対象外にする --> <exclude name="vendors/"/> </fileset> </phpmd> </target> <!-- 設定 phpcpd --> <target name="phpcpd"> <phpcpd> <fileset dir="tests"> <!-- phpファイルのみを対象にする --> <include name="**/*.php"/> <!-- vendorsディレクトリ下を対象外にする --> <exclude name="vendors/"/> </fileset> <formatter type="pmd" outfile="${outputDir}/phpcpd.xml"/> </phpcpd> </target> <!-- 設定 build --> <target name="build" depends="prepare, phpunit, phpmd, phpcpd"/> </project>
composer.json経由ではなく直接インストールした方法 yum -y --enablerepo=remi,remi-php56 install httpd php php-common # 実行ファイル取得 wget -O phing https://www.phing.info/get/phing-latest.phar wget -O phpunit https://phar.phpunit.de/phpunit.phar wget -O phpmd http://static.phpmd.org/php/latest/phpmd.phar wget -O phpcs https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar wget -O php-cs-fixer https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v1.12.0/php-cs-fixer.phar wget -O phpcpd https://phar.phpunit.de/phpcpd-2.0.4.phar # 実行権限付与 sudo chmod +x phing sudo chmod +x phpunit sudo chmod +x phpmd sudo chmod +x phpcs sudo chmod +x php-cs-fixer sudo chmod +x phpcpd # パスを通す sudo mv phing /usr/local/bin/phing sudo mv phpunit /usr/local/bin/phpunit sudo mv phpmd /usr/local/bin/phpmd sudo mv phpcs /usr/local/bin/phpcs sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer sudo mv phpcpd /usr/local/bin/phpcpd # Jenkins連動の為のシンボリックリンク sudo ln -s /usr/local/bin/phing /usr/bin/phing # バージョン確認 phing -v phpunit --version phpmd --version phpcs --version php-cs-fixer --version phpcpd --version
###試したこと
<phpmd pharlocation="/usr/local/bin/phpmd" rulesets="${phpmdRulesets}" >
と変更したところ下記のようになりました。
vagrant:~/phing $ phing Buildfile: /home/vagrant/phing/build.xml jenkins_phing > prepare: [echo] 初期設定 [delete] Deleting directory /home/vagrant/phing/build [mkdir] Created dir: /home/vagrant/phing/build jenkins_phing > phpunit: [phpunit] Total tests run: 4, Failures: 1, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.00389 s jenkins_phing > phpmd: [PHP Error] include_once(phar:///usr/local/bin/phpmd/vendor/autoload.php): failed to open stream: phar error: invalid url or non-existent phar "phar:///usr/local/bin/phpmd/vendor/autoload.php" [line 233 of phar:///usr/local/bin/phing/classes/phing/tasks/ext/phpmd/PHPMDTask.php] [PHP Error] include_once(): Failed opening 'phar:///usr/local/bin/phpmd/vendor/autoload.php' for inclusion (include_path='phar:///usr/local/bin/phing/bin/../classes:.:/usr/share/pear:/usr/share/php') [line 233 of phar:///usr/local/bin/phing/classes/phing/tasks/ext/phpmd/PHPMDTask.php] BUILD FAILED /home/vagrant/phing/build.xml:36:37: /home/vagrant/phing/build.xml:36:37: PHPMDTask depends on PHPMD being installed and on include_path or listed in pharLocation. Total time: 0.2010 seconds
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。