Phing

924 views
868 views

Published on

PHING - Ferramenta de automação de build feita em, e para, PHP!

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
924
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Phing

  1. 1. Doing Things with PHING phpMS Conf 12 Phpmsconf 2012 - duodraco
  2. 2. Duodraco...● Cofundador do PHPSP● Anfitrião do PHPUBSP● TeamLeader na Arizona● Opensourcer por Religião● PHPer por paixão Phpmsconf 2012 - duodraco
  3. 3. Agenda● Ferramentas de Build● O que é o Phing● Walkthrough● Exemplos de uso● Conclusão Phpmsconf 2012 - duodraco
  4. 4. Ferramentas de Build● Make● Ant● Ivy● Maven● Bake● Symfony console● Etc... Phpmsconf 2012 - duodraco
  5. 5. Ferramentas de Build Mas afinal o que são? Phpmsconf 2012 - duodraco
  6. 6. Ferramentas de Build● Automação de tarefas – Compilação – Empacotamento – Testes – Deployment – Documentação – … Phpmsconf 2012 - duodraco
  7. 7. PHINGPHing Is Not Gnumake Phpmsconf 2012 - duodraco
  8. 8. PHING● Baseado no Apache Ant● Instalável via PEAR● Buildfiles em XML● Inúmeras Tarefas disponíveis● Extensível via PHP (inclusive no XML)● Cross-platform● Não requer ferramentas externas Phpmsconf 2012 - duodraco
  9. 9. PHING● Baseado no Apache Ant● Instalável via PEAR● Buildfiles em XML● Inúmeras Tarefas disponíveis● Extensível via PHP (inclusive no XML)● Cross-platform● Não requer ferramentas externas – Extensão XSL Phpmsconf 2012 - duodraco
  10. 10. Ferramenta de build pra PHP? Bitch Please... Phpmsconf 2012 - duodraco Phpmsconf 2012 - duodraco
  11. 11. pear install -a pear.phing.info/phing Phpmsconf 2012 - duodraco
  12. 12. build.xml<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> <type/> </task> </target></project> Phpmsconf 2012 - duodraco
  13. 13. build.xml Tag Root Tag Root<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> <type/> </task> </target></project> Phpmsconf 2012 - duodraco
  14. 14. build.xml Tag Root Tag Root<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> <type/> </task> </target></project> Phpmsconf 2012 - duodraco
  15. 15. build.xml<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> Cada passo do build Cada passo do build <type/> </task> </target></project> Phpmsconf 2012 - duodraco
  16. 16. build.xml<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> Dependência de passo Dependência de passo <type/> </task> </target></project> Phpmsconf 2012 - duodraco
  17. 17. build.xml<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> <type/> Cada </task>executada em um passo Cadatarefa a ser executada em um passo tarefa a ser </target></project> Phpmsconf 2012 - duodraco
  18. 18. build.xml<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> <type/> </task> ““parametro”da tarefa parametro” da tarefa </target></project> Phpmsconf 2012 - duodraco
  19. 19. build.xml Não esqueça do passo padrão Não esqueça do passo padrão<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”xpto” depends=”a,b,c”> <task atributo=”1”> <type/> </task> </target></project> Phpmsconf 2012 - duodraco
  20. 20. Vamos a um exemplo real<?xml version=”1.0”?><project name=”phpms” default=”xpto”> <target name=”hello” depends=””> <echo msg=”Hello Phing!”> </target></project> Phpmsconf 2012 - duodraco
  21. 21. Essa enrolação toda pra fazer um Hello World? Phpmsconf 2012 - duodraco
  22. 22. Vamos começar um projeto...● Criar “esqueleto” de diretórios – application, tests, vendor, web● Criar um bootstrap – Já deixar um autoloader pronto● Criar um front-controller (index.php) Phpmsconf 2012 - duodraco
  23. 23. Show me the code Phpmsconf 2012 - duodraco
  24. 24. O que vimos de novo?● Basedir● Variáveis● Novas Tasks – Mkdir – Delete – Property● Depends em Targets● Target pode estar vazio Phpmsconf 2012 - duodraco
  25. 25. Core Tasks● Append, Loadfile ● Phing, Phingcall● Available, Touch ● Property● Chmod, Chown ● Propertyprompt● Copy, Move, Delete ● Import● Echo ● Typedef, Taskdef● Exec, Php ● Adhoc...● Input – Typedef● Tstamp – Taskdef Phpmsconf 2012 - duodraco
  26. 26. Core Tasks● Append, Loadfile ● Phing, Phingcall● Available, Touch ● Property● Chmod, Chown ● Propertyprompt● Copy, Move, Delete ● Import● Echo ● Typedef, Taskdef● Exec, Php ● Adhoc...● Input – Typedef● Tstamp – Taskdef Phpmsconf 2012 - duodraco
  27. 27. Core Tasks● Append, Loadfile ● Phing, Phingcall● Available, Touch ● Property● Chmod, Chown ● Propertyprompt● Copy, Move, Delete ● Import● Echo ● Typedef, Taskdef● Exec, Php ● Adhoc...● Input – Typedef● Tstamp – Taskdef Phpmsconf 2012 - duodraco
  28. 28. RTFM Read The (Mother)F**king ManualPhpmsconf 2012 - duodraco
  29. 29. Core Tasks - Lógica● If – Not● Condition – And – Or● Foreach – Equals – Listas... – Os● Trycatch – Isset – Ok, não é logica... – Contains – Istrue – Isfalse Phpmsconf 2012 - duodraco
  30. 30. Poderíamos resolver dependências facilmente... Phpmsconf 2012 - duodraco
  31. 31. Tasks Opcionais● Docblox, PHPDoc ● Ioncube, ZendGuard● DBDeploy, ● Pear, Pear2, Phk, Phar, Liquidbase e Zip, Tar PDOExec ● PHPUnit. SimpleTest,● FTP, S3, Scp e Ssh CodeSniffer, MD,● SVN, Hg e Git CPD, Lint● HTTPRequest ● SymfonyConsole● Version ● ... Phpmsconf 2012 - duodraco
  32. 32. Tasks Opcionais● Docblox, PHPDoc ● Ioncube, ZendGuard● DBDeploy, ● Pear, Pear2, Phk, Phar, Liquidbase e Zip, Tar PDOExec ● PHPUnit. SimpleTest,● FTP, S3, Scp e Ssh CodeSniffer, MD,● SVN, Hg e Git CPD, Lint● HTTPRequest ● SymfonyConsole● Version ● ... Phpmsconf 2012 - duodraco
  33. 33. Tasks Opcionais Inclusive PHPDoc2 Inclusive PHPDoc2● Docblox, PHPDoc ● Ioncube, ZendGuard● DBDeploy, ● Pear, Pear2, Phk, Phar, Liquidbase e Zip, Tar PDOExec ● PHPUnit. SimpleTest,● FTP, S3, Scp e Ssh CodeSniffer, MD,● SVN, Hg e Git CPD, Lint● HTTPRequest ● SymfonyConsole● Version ● ... Phpmsconf 2012 - duodraco
  34. 34. Tasks Opcionais● Docblox, PHPDoc ● Ioncube, ZendGuard● DBDeploy, ● Pear, Pear2, Phk, Phar, Liquidbase e Zip, Tar PDOExec ● PHPUnit. SimpleTest,● FTP, S3, Scp e Ssh CodeSniffer, MD,● SVN, Hg e Git CPD, Lint● Controle suas versões Controle suas versões HTTPRequest ● SymfonyConsole● Version ● ... Phpmsconf 2012 - duodraco
  35. 35. Tasks Opcionais● Docblox, PHPDoc ● Ioncube, ZendGuard● DBDeploy, ● Pear, Pear2, Phk, Phar, Liquidbase e Zip, Tar PDOExec ● PHPUnit. SimpleTest, Exemplos a seguir Exemplos a seguir● FTP, S3, Scp e Ssh FTP, S3, Scp e Ssh CodeSniffer, MD,● SVN, Hg e Git CPD, Lint● HTTPRequest ● SymfonyConsole● Version ● ... Phpmsconf 2012 - duodraco
  36. 36. E se quiséssemos colocar o Respect no nosso projeto? Phpmsconf 2012 - duodraco
  37. 37. PORQUE DIABOS NO MUNDOVOCÊ NÃO USOU O COMPOSER? Phpmsconf 2012 - duodraco
  38. 38. Integração Contínua Phpmsconf 2012 - duodraco
  39. 39. O que usamos dessa vez...● Tasks core e opcionais● Build.properties● Filesets – Dominar filesets fará toda a diferença Phpmsconf 2012 - duodraco
  40. 40. CasosPhpmsconf 2012 - duodraco
  41. 41. Problema 1● Equipes diferentes de desenvolvimento, deploy e infra● Software com dependências insolúveis por ele mesmo● Deploys demorados Phpmsconf 2012 - duodraco
  42. 42. Problema 1● Equipes diferentes de ● Checagem de desenvolvimento, dependências deploy e infra ● Solução de● Software com dependências dependências ● Migração de BD insolúveis por ele mesmo ● Deploy!● Deploys demorados Phpmsconf 2012 - duodraco
  43. 43. Problema 2● Equipe inexperiente – demora para iniciar projetos novos – Projetos sem testes – Commits/Pushes sem verificação ou testes Phpmsconf 2012 - duodraco
  44. 44. Problema 2● Equipe inexperiente ● Criação automatizada – demora para iniciar de estrutura projetos novos ● Criação automatizada – Projetos sem testes de esqueleto de – Commits/Pushes sem testes verificação ou testes ● Checagem do projeto via hook de commit Phpmsconf 2012 - duodraco
  45. 45. Problema 3● Deploys multi-step – Staging, Produção● Muitos passos para deploy● Deploys em diferentes ambientes – FTP, Git, Amazon Phpmsconf 2012 - duodraco
  46. 46. Problema 3● Deploys multi-step ● Verificação de regras – Staging, Produção ● Automatização de● Muitos passos para passos deploy ● Envio direto para cada● Deploys em um dos ambientes diferentes ambientes – FTP, Git, Amazon Phpmsconf 2012 - duodraco
  47. 47. Problema 3● Deploys multi-step ● Verificação de regras – Staging, Produção ● Automatização de● Muitos passos para passos deploy ● Envio direto para cada● Deploys em um dos ambientes diferentes ambientes – FTP, Git, Amazon Phpmsconf 2012 - duodraco
  48. 48. Dicas● Crie arquivos externos de propriedades – Build.properties● Crie filesets apontando para sua library, suite de testes e/ou bibliotecas externas● Organize bem seu build.xml – Opcionalmente quebre-o em mais de um arquivo por domínio de uso● Use e abuse do sistema de interdependência de targets Phpmsconf 2012 - duodraco
  49. 49. ConclusãoPhpmsconf 2012 - duodraco
  50. 50. Para mais informações: http://phing.info Phpmsconf 2012 - duodraco
  51. 51. Questions ??? Phpmsconf 2012 - duodraco
  52. 52. Obrigado Mato Grosso Phpmsconf 2012 - duodraco
  53. 53. Obrigado Mato Grosso do Sul Phpmsconf 2012 - duodraco
  54. 54. ● o@duodra.co● phpsp.org.br● [twitter | facebook | github]/duodraco● http://duodra.co/contato/ speakerdeck.com/u/duodraco Phpmsconf 2012 - duodraco

×