Advertisement
Advertisement

More Related Content

Advertisement

Recently uploaded(20)

Advertisement

Ant vs Phing

  1. Ant vs Phing parola chiave automatizzare
  2. Ego slide • Manuel “Kea” Baldassarri • Senior Developer in Ideato • PHP developer dal 1992 • Marito e Padre • mb@ideato.it twitter: k3a • flickr: kea42 slideshare: kea42 http://phpday.it #phpday @k3a
  3. Automate http://phpday.it #phpday @k3a
  4. ? Te sto http://phpday.it #phpday @k3a
  5. Build automation software http://en.wikipedia.org/wiki/List_of_build_automation_software http://phpday.it #phpday @k3a
  6. GNU make http://phpday.it #phpday @k3a
  7. Ant • Ant is kind of GNU make • Ant is a Java library and command-line tool • Ant is Open Source, maintained by Apache • Ant is cross platform and portable • Ant is well suited to a large number of automation and scripting tasks http://phpday.it #phpday @k3a
  8. Phing • PHing Is Not GNU make • It's a PHP project build system or build tool based on Apache Ant http://phpday.it #phpday @k3a
  9. Installation Ant • Apt-get o Yum • Donwload binary file and setup the env • SVN + Build • Requires JRE 1.4 http://phpday.it #phpday @k3a
  10. Installation Phing • PEAR • Donwload binary file and setup the env • SVN • Requires PHP 5.2 http://phpday.it #phpday @k3a
  11. http://phpday.it #phpday @k3a
  12. Phing and Jenkins http://phpday.it #phpday @k3a
  13. Ant and Jenkins http://phpday.it #phpday @k3a
  14. http://phpday.it #phpday @k3a
  15. Ant Phing Netbeans Plugin No Eclipse Plugin wip Built-in* Zend Studio Run cmd Textmate Bundle** Bundle** phpStorm No Built-in*** Komodo Run cmd Run cmd http://phpday.it #phpday @k3a
  16. How they work • XML configuration file • Project, Target, Task, Property, Type http://phpday.it #phpday @k3a
  17. http://phpday.it #phpday @k3a
  18. project <?xml version="1.0" ?> <project name="TestProject" basedir="." default="main"> <!-- Everything else goes here --> </project> http://phpday.it #phpday @k3a
  19. target <target name="main"> <!-- everything else goes here --> </target> http://phpday.it #phpday @k3a
  20. target <target name="t1">...</target> <target name="t2">...</target> <target name="main" depends="t1,t2"> ... </target> http://phpday.it #phpday @k3a
  21. target <target name="t1" depends="t3">...</target> <target name="t2" depends="t3">...</target> <target name="t3">...</target> <target name="t4" depends="t1,t2"> ... </target> http://phpday.it #phpday @k3a
  22. Tasks • Archive • Logging • Audit/Coverage • Mail • Deployment • Remote • Documentation • Versioning • File • Testing http://phpday.it #phpday @k3a
  23. Useful tasks • scp • ssh (phing), sshexec (ant) • ftpdeploy (phing), ftp (ant) • tar (gzip, bzip2), zip • git*, svn*, cvs http://phpday.it #phpday @k3a
  24. Useful Phing tasks • PHPUnit • JsLint, JsMin • PHPDocumentor • XMLLint • PHPDepend • PHPLint • PHPMD • Tidy • PHPCPD • S3 http://phpday.it #phpday @k3a
  25. ExecTask ANT <exec executable="ls"> <arg value="-l"/> <arg value="/tmp"/> </exec> PHING <exec command="ls -l /tmp" /> http://phpday.it #phpday @k3a
  26. property Build.xml <property name="db.name" value="phpday" /> <property name="db.user" value="k3a" /> <property name="db.port" value="3306" /> build.properties file db.name = phpday db.user = k3a db.port = 3306 <property file='build.properties' /> http://phpday.it #phpday @k3a
  27. property <project default="uno"> <property name="chi_sono" value="io" /> <target name="uno"> <echo>Chi sono: ${chi_sono}</echo> </target> </project> $ ant uno: [echo] Chi sono: io http://phpday.it #phpday @k3a
  28. property <project default="uno"> <property name="chi_sono" value="io" /> <target name="uno"> <echo>Chi sono: ${chi_sono}</echo> </target> </project> $ ant -Dchi_sono=phpDay uno: [echo] Chi sono: phpDay http://phpday.it #phpday @k3a
  29. property <project default="uno"> <property name="chi_sono" value="io" /> <target name="uno"> <property name="chi_sono" value="voi" /> <echo>Chi sono: ${chi_sono}</echo> </target> </project> $ ant uno: [echo] Chi sono: io http://phpday.it #phpday @k3a
  30. fileset <project> <fileset dir="." id="foo"> <include name="*.php" /> </fileset> <target name="uno" > <copy todir="/tmp"> <fileset refid="foo" /> </copy> </target> </project> http://phpday.it #phpday @k3a
  31. fileset <fileset dir="/tmp" id="fileset1"> <include name="dir1/file.txt" /> <include name="dir2/**" /> <exclude name="dir2/**/i*.php" /> </fileset> http://phpday.it #phpday @k3a
  32. fileset <scp todir="user:password@somehost:/home/chuck"> <fileset dir="src_dir"> <include name="**/*.java"/> </fileset> </scp> <scp file="myfile.txt" todir="user@somehost:/home/chuck" keyfile="${user.home}/.ssh/id_dsa" passphrase="my extremely secret passphrase" /> http://phpday.it #phpday @k3a
  33. PHP Project Wizard (PPW) ppw --source src --tests tests --name myproject PHP Project Wizard (PPW) 1.0.4 by Sebastian Bergmann. Wrote build script for Apache Ant to ./build.xml Wrote configuration for PHPUnit to ./phpunit.xml.dist http://phpday.it #phpday @k3a
  34. build.xml <target name="parallelTasks"> <parallel threadCount="2"> <sequential> <antcall target="pdepend"/> <antcall target="phpmd"/> </sequential> <antcall target="phpcpd"/> <antcall target="phpcs"/> <antcall target="phpdoc"/> <antcall target="phploc"/> </parallel> </target> http://phpday.it #phpday @k3a
  35. build.xml <target name="phpmd" description="Generate pmd.xml PHPMD"> <exec executable="phpmd"> <arg line="${source} xml codesize,design,naming,unusedcode --reportfile ${basedir}/build/logs/pmd.xml" /> </exec> </target> http://phpday.it #phpday @k3a
  36. Conclusions 42 http://phpday.it #phpday @k3a
  37. ? Te sto http://phpday.it #phpday @k3a
  38. Lasciate un feedback! http://joind.in/2999 http://phpday.it #phpday @k3a
  39. Riferimenti • Apache Ant: http://ant.apache.org/ • Phing: http://www.phing.info/trac/ • phpunit, ppw, phpcpd, phploc... https://github.com/sebastianbergmann • phpmd: http://phpmd.org • phpdepend: http://pdepend.org/ • Extending phing: http://www.phing.info/docs/guide/ current/chapters/ExtendingPhing.html http://phpday.it #phpday @k3a

Editor's Notes

  1. Cos&amp;#x2019;&amp;#xE8; Ant\nCos&amp;#x2019;&amp;#xE8; Phing\nCosa possiamo automatizzare\nCosa possiamo automatizzare con Ant/Phing\nPrincipali gruppi di task\nTarget -&gt; Target chain\n\n
  2. \n
  3. Quotidianamente, Compiti ripetitivi (e noiosi): fare i backup, lavare la macchina, trasformare immagini in serie, cambiare i pannolini, deploy di siti web, test del codice, verifica delle performance, lavare i denti, minimizzare js e css\nPer fortuna ci sono molte cose che si possono automatizzare con i sistemi di build automation\nutilizzare software BA &amp;#xE8; una best practice perch&amp;#xE8; procedure manuali sono passive di errori, BA sono autodocumentate, aumentano la nostra produttivit&amp;#xE0;, le BA possono essere lanciate da altri sistemi, cron, CI\n\n
  4. Quanti utilizzano software di build automation?\nAnt/Phing/Altro\n\n
  5. \n
  6. in principio\n
  7. luglio 2000 1.1\nben si adatta\n
  8. tracce nel 2001\n2004 porting su PHP5\n
  9. Consigliato JDK 1.4, sconsigliato perch&amp;#xE8; non funzionano diversi task (dal sito non &amp;#xE8; dato sapere quali)\n
  10. PHPUnit 3.4\nSimpletest\nXdebug 2\nPhpdocumentor\n
  11. Jenkins, Cruise control, Bamboo: entrambi, bamboo con symlink\n\n
  12. Template for Jenkins jobs for PHP project\n
  13. Template for Jenkins jobs for PHP project\n
  14. I maggiori programmi utilizzati (a parte Vi ed Emacs), Cross platform (tranne Textmate)\nNe utilizzate altri?\n
  15. * Eclipse si, ZS version &lt;8\n** Bundle non in rete ma da creare a mano\n*** Presente ad oggi solo in Early Access Program (probabilmente dalla 2.1)\n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. per ant, git e svn non sono nel ramo ufficiale ma si trovano dei plugin/macro\n
  24. Mess Detector, analizza il codice e fornisce un report su possibli bug, espressioni complicate, parametri metodi e propriet&amp;#xE0; non utilizzati\n\n
  25. In realt&amp;#xE0; originariamente Ant supportava l&amp;#x2019;attributo &amp;#x201C;command&amp;#x201D; ma ora &amp;#xE8; deprecato\n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. oltre ad include/exclude, dimensione, created at, dir/file, quale livello del fs\nricrea la struttura\noltre al fileset esistono altri type, filelist, mapper, filter\n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n\n
  38. \n\n
  39. \n
Advertisement