Download - Phing
![Page 1: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/1.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Doing Things with PHINGDoing Things with PHINGphpMS Conf 12phpMS Conf 12
![Page 2: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/2.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Duodraco...Duodraco...
● Cofundador do PHPSPCofundador do PHPSP● Anfitrião do PHPUBSPAnfitrião do PHPUBSP● TeamLeader na ArizonaTeamLeader na Arizona● Opensourcer por ReligiãoOpensourcer por Religião● PHPer por paixãoPHPer por paixão
![Page 3: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/3.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
AgendaAgenda
● Ferramentas de BuildFerramentas de Build● O que é o PhingO que é o Phing● WalkthroughWalkthrough● Exemplos de usoExemplos de uso● ConclusãoConclusão
![Page 4: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/4.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Ferramentas de BuildFerramentas de Build
● MakeMake● AntAnt● IvyIvy● MavenMaven● BakeBake● Symfony consoleSymfony console● Etc...Etc...
![Page 5: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/5.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Ferramentas de BuildFerramentas de Build
Mas afinal o que são?Mas afinal o que são?
![Page 6: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/6.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Ferramentas de BuildFerramentas de Build
● Automação de tarefasAutomação de tarefas– CompilaçãoCompilação– EmpacotamentoEmpacotamento– TestesTestes– DeploymentDeployment– DocumentaçãoDocumentação– ……
![Page 7: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/7.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
PHINGPHING
PHing Is Not Gnumake
![Page 8: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/8.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
PHINGPHING
● Baseado no Apache AntBaseado no Apache Ant● Instalável via PEARInstalável via PEAR● Buildfiles em XMLBuildfiles em XML● Inúmeras Tarefas disponíveisInúmeras Tarefas disponíveis● Extensível via PHP (inclusive no XML)Extensível via PHP (inclusive no XML)● Cross-platformCross-platform● Não requer ferramentas externasNão requer ferramentas externas
![Page 9: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/9.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
PHINGPHING
● Baseado no Apache AntBaseado no Apache Ant● Instalável via PEARInstalável via PEAR● Buildfiles em XMLBuildfiles em XML● Inúmeras Tarefas disponíveisInúmeras Tarefas disponíveis● Extensível via PHP (inclusive no XML)Extensível via PHP (inclusive no XML)● Cross-platformCross-platform● Não requer ferramentas externasNão requer ferramentas externas
– Extensão XSLExtensão XSL
![Page 10: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/10.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Ferramenta de build pra PHP?
Bitch Please...
![Page 11: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/11.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
pear install -a pear.phing.info/phingpear install -a pear.phing.info/phing
![Page 12: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/12.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
![Page 13: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/13.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
Tag RootTag RootTag RootTag Root
![Page 14: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/14.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
Tag RootTag RootTag RootTag Root
![Page 15: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/15.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
Cada passo do buildCada passo do buildCada passo do buildCada passo do build
![Page 16: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/16.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
Dependência de passoDependência de passoDependência de passoDependência de passo
![Page 17: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/17.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
Cada tarefa a ser executada em um passoCada tarefa a ser executada em um passoCada tarefa a ser executada em um passoCada tarefa a ser executada em um passo
![Page 18: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/18.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
““parametro” da tarefaparametro” da tarefa““parametro” da tarefaparametro” da tarefa
![Page 19: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/19.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
build.xmlbuild.xml
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”xpto” name=”xpto” dependsdepends=”a,b,c”>=”a,b,c”> < <tasktask atributo=”1”> atributo=”1”> < <typetype/>/> </task> </task> </target> </target></project></project>
Não esqueça do passo padrãoNão esqueça do passo padrãoNão esqueça do passo padrãoNão esqueça do passo padrão
![Page 20: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/20.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Vamos a um exemplo realVamos a um exemplo real
<?xml version=”1.0”?><?xml version=”1.0”?><<projectproject name=” name=”phpmsphpms” ” defaultdefault=”xpto”>=”xpto”> < <targettarget name=”hello” name=”hello” dependsdepends=””>=””> < <echoecho msg=”Hello Phing!”> msg=”Hello Phing!”> </target> </target></project></project>
![Page 21: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/21.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Essa enrolação toda pra fazer um Essa enrolação toda pra fazer um Hello World?Hello World?
![Page 22: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/22.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Vamos começar um projeto...Vamos começar um projeto...
● Criar “esqueleto” de diretóriosCriar “esqueleto” de diretórios– application, tests, vendor, webapplication, tests, vendor, web
● Criar um bootstrapCriar um bootstrap– Já deixar um autoloader prontoJá deixar um autoloader pronto
● Criar um front-controller (index.php)Criar um front-controller (index.php)
![Page 23: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/23.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Show me the codeShow me the code
![Page 24: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/24.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
O que vimos de novo?O que vimos de novo?
● BasedirBasedir● VariáveisVariáveis● Novas TasksNovas Tasks
– MkdirMkdir– DeleteDelete– PropertyProperty
● Depends em TargetsDepends em Targets● Target pode estar vazioTarget pode estar vazio
![Page 25: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/25.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Core TasksCore Tasks
● Append, LoadfileAppend, Loadfile● Available, TouchAvailable, Touch● Chmod, ChownChmod, Chown● Copy, Move, DeleteCopy, Move, Delete● EchoEcho● Exec, PhpExec, Php● InputInput● TstampTstamp
● Phing, PhingcallPhing, Phingcall● PropertyProperty● PropertypromptPropertyprompt● ImportImport● Typedef, TaskdefTypedef, Taskdef● Adhoc...Adhoc...
– TypedefTypedef– TaskdefTaskdef
![Page 26: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/26.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Core TasksCore Tasks
● Append, LoadfileAppend, Loadfile● Available, TouchAvailable, Touch● Chmod, ChownChmod, Chown● Copy, Move, DeleteCopy, Move, Delete● EchoEcho● Exec, PhpExec, Php● InputInput● TstampTstamp
● Phing, PhingcallPhing, Phingcall● PropertyProperty● PropertypromptPropertyprompt● ImportImport● Typedef, TaskdefTypedef, Taskdef● Adhoc...Adhoc...
– TypedefTypedef– TaskdefTaskdef
![Page 27: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/27.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Core TasksCore Tasks
● Append, LoadfileAppend, Loadfile● Available, TouchAvailable, Touch● Chmod, ChownChmod, Chown● Copy, Move, DeleteCopy, Move, Delete● EchoEcho● ExecExec, , PhpPhp● InputInput● TstampTstamp
● Phing, Phing, PhingcallPhingcall● PropertyProperty● PropertypromptPropertyprompt● ImportImport● Typedef, TaskdefTypedef, Taskdef● AdhocAdhoc......
– TypedefTypedef– TaskdefTaskdef
![Page 28: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/28.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
RTFMRTFM
Read Read The The
(Mother)F**king (Mother)F**king ManualManual
![Page 29: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/29.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Core Tasks - LógicaCore Tasks - Lógica
● IfIf● ConditionCondition● ForeachForeach
– Listas...Listas...
● TrycatchTrycatch– Ok, não é logica...Ok, não é logica...
– NotNot– AndAnd– OrOr– EqualsEquals– OsOs– IssetIsset– ContainsContains– IstrueIstrue– IsfalseIsfalse
![Page 30: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/30.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Poderíamos resolver dependências facilmente...Poderíamos resolver dependências facilmente...
![Page 31: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/31.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Tasks OpcionaisTasks Opcionais
● Docblox, PHPDocDocblox, PHPDoc● DBDeploy, DBDeploy,
Liquidbase e Liquidbase e PDOExecPDOExec
● FTP, S3, Scp e Ssh FTP, S3, Scp e Ssh ● SVN, Hg e GitSVN, Hg e Git● HTTPRequestHTTPRequest● VersionVersion
● Ioncube, ZendGuardIoncube, ZendGuard● Pear, Pear2, Phk, Phar, Pear, Pear2, Phk, Phar,
Zip, TarZip, Tar● PHPUnit. SimpleTest, PHPUnit. SimpleTest,
CodeSniffer, MD, CodeSniffer, MD, CPD, LintCPD, Lint
● SymfonyConsoleSymfonyConsole● ......
![Page 32: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/32.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Tasks OpcionaisTasks Opcionais
● Docblox, Docblox, PHPDocPHPDoc● DBDeploy, DBDeploy,
Liquidbase e Liquidbase e PDOExecPDOExec
● FTP, S3, Scp e Ssh FTP, S3, Scp e Ssh ● SVN, Hg e SVN, Hg e GitGit● HTTPRequestHTTPRequest● VersionVersion
● Ioncube, ZendGuardIoncube, ZendGuard● Pear, Pear2, Phk, Phar, Pear, Pear2, Phk, Phar,
Zip, TarZip, Tar● PHPUnit. SimpleTest, PHPUnit. SimpleTest,
CodeSniffer, MD, CodeSniffer, MD, CPD, LintCPD, Lint
● SymfonyConsoleSymfonyConsole● ......
![Page 33: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/33.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Tasks OpcionaisTasks Opcionais
● Docblox, Docblox, PHPDocPHPDoc● DBDeploy, DBDeploy,
Liquidbase e Liquidbase e PDOExecPDOExec
● FTP, S3, Scp e Ssh FTP, S3, Scp e Ssh ● SVN, Hg e SVN, Hg e GitGit● HTTPRequestHTTPRequest● VersionVersion
● Ioncube, ZendGuardIoncube, ZendGuard● Pear, Pear2, Phk, Phar, Pear, Pear2, Phk, Phar,
Zip, TarZip, Tar● PHPUnit. SimpleTest, PHPUnit. SimpleTest,
CodeSniffer, MD, CodeSniffer, MD, CPD, LintCPD, Lint
● SymfonyConsoleSymfonyConsole● ......
Inclusive PHPDoc2Inclusive PHPDoc2Inclusive PHPDoc2Inclusive PHPDoc2
![Page 34: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/34.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Tasks OpcionaisTasks Opcionais
● Docblox, Docblox, PHPDocPHPDoc● DBDeploy, DBDeploy,
Liquidbase e Liquidbase e PDOExecPDOExec
● FTP, S3, Scp e Ssh FTP, S3, Scp e Ssh ● SVN, Hg e SVN, Hg e GitGit● HTTPRequestHTTPRequest● VersionVersion
● Ioncube, ZendGuardIoncube, ZendGuard● Pear, Pear2, Phk, Phar, Pear, Pear2, Phk, Phar,
Zip, TarZip, Tar● PHPUnit. SimpleTest, PHPUnit. SimpleTest,
CodeSniffer, MD, CodeSniffer, MD, CPD, LintCPD, Lint
● SymfonyConsoleSymfonyConsole● ......
Controle suas versõesControle suas versõesControle suas versõesControle suas versões
![Page 35: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/35.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Tasks OpcionaisTasks Opcionais
● Docblox, Docblox, PHPDocPHPDoc● DBDeploy, DBDeploy,
Liquidbase e Liquidbase e PDOExecPDOExec
● FTP, S3, Scp e Ssh FTP, S3, Scp e Ssh ● SVN, Hg e SVN, Hg e GitGit● HTTPRequestHTTPRequest● VersionVersion
● Ioncube, ZendGuardIoncube, ZendGuard● Pear, Pear2, Phk, Phar, Pear, Pear2, Phk, Phar,
Zip, TarZip, Tar● PHPUnit. SimpleTest, PHPUnit. SimpleTest,
CodeSniffer, MD, CodeSniffer, MD, CPD, LintCPD, Lint
● SymfonyConsoleSymfonyConsole● ......
Exemplos a seguirExemplos a seguirExemplos a seguirExemplos a seguir
![Page 36: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/36.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
E se quiséssemos colocar o E se quiséssemos colocar o RespectRespect no nosso no nosso projeto?projeto?
![Page 37: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/37.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
PORQUE DIABOS NO MUNDO
VOCÊ NÃO USOU O COMPOSER?
![Page 38: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/38.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Integração ContínuaIntegração Contínua
![Page 39: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/39.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
O que usamos dessa vez...O que usamos dessa vez...
● Tasks core e opcionaisTasks core e opcionais● Build.propertiesBuild.properties● FilesetsFilesets
– Dominar filesets fará toda a diferençaDominar filesets fará toda a diferença
![Page 40: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/40.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
CasosCasos
![Page 41: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/41.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Problema 1Problema 1
● Equipes diferentes de Equipes diferentes de desenvolvimento, desenvolvimento, deploy e infradeploy e infra
● Software com Software com dependências dependências insolúveis por ele insolúveis por ele mesmomesmo
● Deploys demoradosDeploys demorados
![Page 42: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/42.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Problema 1Problema 1
● Equipes diferentes de Equipes diferentes de desenvolvimento, desenvolvimento, deploy e infradeploy e infra
● Software com Software com dependências dependências insolúveis por ele insolúveis por ele mesmomesmo
● Deploys demoradosDeploys demorados
● Checagem de Checagem de dependênciasdependências
● Solução de Solução de dependênciasdependências
● Migração de BDMigração de BD● Deploy!Deploy!
![Page 43: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/43.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Problema 2Problema 2
● Equipe inexperienteEquipe inexperiente– demora para iniciar demora para iniciar
projetos novosprojetos novos– Projetos sem testesProjetos sem testes– Commits/Pushes sem Commits/Pushes sem
verificação ou testesverificação ou testes
![Page 44: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/44.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Problema 2Problema 2
● Equipe inexperienteEquipe inexperiente– demora para iniciar demora para iniciar
projetos novosprojetos novos– Projetos sem testesProjetos sem testes– Commits/Pushes sem Commits/Pushes sem
verificação ou testesverificação ou testes
● Criação automatizada Criação automatizada de estruturade estrutura
● Criação automatizada Criação automatizada de esqueleto de de esqueleto de testestestes
● Checagem do projeto Checagem do projeto via hook de commit via hook de commit
![Page 45: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/45.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Problema 3Problema 3
● Deploys multi-stepDeploys multi-step– Staging, ProduçãoStaging, Produção
● Muitos passos para Muitos passos para deploydeploy
● Deploys em Deploys em diferentes ambientesdiferentes ambientes– FTP, Git, AmazonFTP, Git, Amazon
![Page 46: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/46.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Problema 3Problema 3
● Deploys multi-stepDeploys multi-step– Staging, ProduçãoStaging, Produção
● Muitos passos para Muitos passos para deploydeploy
● Deploys em Deploys em diferentes ambientesdiferentes ambientes– FTP, Git, AmazonFTP, Git, Amazon
● Verificação de regrasVerificação de regras● Automatização de Automatização de
passospassos● Envio direto para cada Envio direto para cada
um dos ambientesum dos ambientes
![Page 47: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/47.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Problema 3Problema 3
● Deploys multi-stepDeploys multi-step– Staging, ProduçãoStaging, Produção
● Muitos passos para Muitos passos para deploydeploy
● Deploys em Deploys em diferentes ambientesdiferentes ambientes– FTP, Git, AmazonFTP, Git, Amazon
● Verificação de regrasVerificação de regras● Automatização de Automatização de
passospassos● Envio direto para cada Envio direto para cada
um dos ambientesum dos ambientes
![Page 48: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/48.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
DicasDicas
● Crie arquivos externos de propriedadesCrie arquivos externos de propriedades– Build.propertiesBuild.properties
● Crie filesets apontando para sua library, suite de Crie filesets apontando para sua library, suite de testes e/ou bibliotecas externastestes e/ou bibliotecas externas
● Organize bem seu build.xmlOrganize bem seu build.xml– Opcionalmente quebre-o em mais de um arquivo Opcionalmente quebre-o em mais de um arquivo
por domínio de usopor domínio de uso
● Use e abuse do sistema de interdependência de Use e abuse do sistema de interdependência de targetstargets
![Page 49: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/49.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
ConclusãoConclusão
![Page 50: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/50.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Para mais informações:Para mais informações:http://phing.infohttp://phing.info
![Page 51: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/51.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Questions ???Questions ???
![Page 52: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/52.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Obrigado Mato GrossoObrigado Mato Grosso
![Page 53: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/53.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
Obrigado Mato GrossoObrigado Mato Grosso do Suldo Sul
![Page 54: Phing](https://reader033.vdocuments.site/reader033/viewer/2022052900/555a005bd8b42ad00a8b4e72/html5/thumbnails/54.jpg)
Phpmsconf 2012 - duodracoPhpmsconf 2012 - duodraco
● [email protected]● phpsp.org.br● [twitter | facebook | github]/duodraco● http://duodra.co/contato/
speakerdeck.com/u/duodraco