Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

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

http://robo.li/

Kenichiro Kishida

October 08, 2017
Tweet

More Decks by Kenichiro Kishida

Other Decks in Technology

Transcript

  1. } else { // 失敗パターンの処理 this.log.error(“エラーメッセージ”); this.response.status = 500; throw

    new ServerError(); } this.log.info(“何かのログ”); @@ -8,6 +8,7 @@ php:
  2. if (results) { // 成功パターンの処理 return this; } else {

    // 失敗パターンの処理 this.log.error(“エラーメッセージ”); this.response.status = 500; throw new ServerError(); } this.log.info(“何かのログ”);
  3. 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' } } }
  4. <?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>
  5. • automate your common tasks • start workers • run

    parallel tasks • execute commands • run tests • watch filesystem changes