Save 37% off PRO during our Black Friday Sale! »

Robo を使ったモダンなタスク管理/php-conference-kansai-2017

Robo を使ったモダンなタスク管理/php-conference-kansai-2017

最近ではGradleやGulpなどタスクランナーは、よりコードに近い形で定義できるツールが使われてきています。
PHPではJenkinsなどとの連携の容易さから、Phingが使われることが多かったと思いますが、XMLでの定義は容易ではありませんでした。
RoboはPHPのコードでタスクを定義できるモダンなタスクランナーで、私たちPHPerにも読みやすく理解しやすい構造をしています。

このセッションではRoboを使ったタスクの定義を、動作デモを交えて紹介したいと思います。
http://robo.li/

C4c161ae9eeeed8f161197410f7a228a?s=128

Kenichiro Kishida

July 15, 2017
Tweet

Transcript

  1. 3PCPΛ࢖ͬͨ ϞμϯͳλεΫ؅ཧ php conference Kansai 2017 by @sizuhiko

  2. ,FOJDIJSP,JTIJEB 5PLZP +"1"/ TJ[VIJLP!HNBJMDPN !TJ[VIJLP IUUQTHJUIVCDPNTJ[VIJLP IUUQCMPHPQFOUPLZPKQ 2QN[OGTEQGFQ 

  3. ࣗಈԽͯ͠·͔͢ʁ

  4. %FW0QT IUUQTKBXJLJQFEJBPSHXJLJ%FW0QTΑΓҾ༻

  5. +FOLJOT

  6. pipeline { agent any stages { stage('Install') { steps {

    sh 'npm install' } } stage('JsHint') { steps { sh 'npm run lint:ci' } } stage('Test') { steps { sh 'npm run test:ci' } } } post { always { step([$class: 'CheckStylePublisher', pattern: 'jshint-results.xml', unstableTotalAll: '0', usePreviousBuildAsReference: true]) junit allowEmptyResults: true, testResults: 'test-results/*.xml' } } }
  7. None
  8. <?xml version="1.0" encoding="UTF-8"?> <!-- Phing build config file. @link http://www.phing.info/

    --> <project name="blogapp" default="build"> <!-- Properties --> <property name="basedir" value="${phing.dir}" /> <property name="appdir" value="${basedir}/app" /> <property name="logdir" value="${appdir}/tmp/logs" /> <property name="vendorbindir" value="${appdir}/Vendor/bin" /> <!-- Build --> <target name="build" depends="prepare,caketest,behat,phpcs,phpmd,phpcpd"/> <!-- Prepare --> <target name="prepare" description="Prepare for build"> <exec dir="${appdir}" executable="${appdir}/Console/cake" output="${logdir}/migration.log" checkreturn="true"> <arg line="migrations.migration" /> <arg line="run" /> <arg line="all" /> </exec> </target> <!-- CakePHP unit test with PHPUnit --> <target name="caketest" description="Run CakePHP unit tests with PHPUnit"> <exec dir="${appdir}" executable="${appdir}/Console/cake" output="${logdir}/caketest.log" checkreturn="true"> <arg line="test" /> <arg line="--log-junit=${appdir}/reports/unittest.xml" /> <arg line="--coverage-html=${appdir}/reports" /> <arg line="--coverage-clover=${appdir}/reports/coverage.xml" /> <arg line="app" /> <arg line="AllTests" /> </exec> </target> <!-- CakePHP acceptance test with Behat --> <target name="behat" description="Run CakePHP acceptance test with Behat"> <exec command="find ${appdir}/tmp -type d -print | xargs chmod 777" escape="false" /> <exec dir="${appdir}" executable="${appdir}/Console/cake" output="${logdir}/behat.log" checkreturn="true"> <arg line="Bdd.story" /> <arg line="--format=junit" /> <arg line="--out=${appdir}/reports" /> </exec>
  9. w(/6.BLF 3BLFͳͲؚΉ  wNBWFOBOU wHSBEMF wHSVOU wHVMQ

  10. 443 41"

  11. 443 41"

  12. $PNQPTFS

  13. { "scripts": { "test": [ "@composer install", "@clear",
 "phpunit" ],


    "clear": "rm -rf test-results/*” } }
  14. http://robo.li/

  15. • automate your common tasks • start workers • run

    parallel tasks • execute commands • run tests • watch filesystem changes
  16. %FNP https://github.com/sizuhiko/ phpkansai-2017-demo

  17. 1)1 /PEF+4 ґଘؔ܎ͷղܾ $PNQPTFS /1. λεΫϥϯφʔ 3PCP (VMQ

  18. ssh rsync phpunit

  19. WJTJUNZCMPHHJUIVC https://github.com/sizuhiko http://blog.open.tokyo.jp