SlideShare a Scribd company logo
1 of 13
Download to read offline
Building com Phing
   (em 7 minutos)


     Duodraco

      PHPSP
      Arizona
Build em PHP?
●   Build = automação de processos
    –   Testes e artefatos de QA
    –   Deployment
    –   Atualização
    –   Distribuição
    –   Verificação
Phing
●
    PHing Is Not Gnumake
●
    http://phing.info
●   Sintaxe do Apache Ant
    –   Buildfile com XML
●   Lógica
●   Tarefas Core
●   Tarefas Opcionais
Estrutura
 <project default=””>
   <target name=””>
     <task_a param=””/>
     <task_b param=””>
       <aux name=”” value=””/>
     </task_b>
   </target>
 </project
Copiando o projeto...
 <target name=”le_deploy”>
   <copy todir=”/var/www”>
     <fileset dir=".">
       <exclude name=".git" />
     </fileset>
   </copy>
 </target>
PHPUnit...
 <target name=”phpunit”>
   <phpunit bootstrap="src/autoload.php"
            codecoverage="true"
            haltonfailure="true"
            haltonerror="true">
    <formatter type="plain" usefile="false"/>
    <batchtest>
      <fileset dir="tests">
        <include name="**/*Test*.php"/>
      </fileset>
    </batchtest>
   </phpunit>
 </target>
Checando dependencias
    <target name=”check_dep”>
      <composer command=”update”/>
    </target>


●
    composer.json
    {
      require:{
        “php”:”>5.4.0”,
        “ext-imagick”:”*”,
        “monolog/monolog”:”0.8.*”
      }
    }
Variáveis
●
    build.properties
    app.version=13.04
    path.log=/var/log/myapps/app.log
    path.webroot=/var/www

●
    build.xml
    <properties file=”build.properties”/>
    <echo msg=”App ver. ${app.version}”/>
    <copy todir=”${path.webroot}”>
      ...
Combinando tarefas
 <target name=”phpunit”>
   …
 <target name=”pdepend”>
   …
 <target name=”phpcpd”>
   …
 <target name=”qa”
  depends=”phpcpd,pdepend,phpunit”>
Organizando
 <target name=”qa”>
   <phing
     phingfile="qa.xml"
     inheritRefs="true"
     target="qa-tests" />
 </target>
 <target name=”deploy”>
   <phing
     phingfile="deploy.xml"
     inheritRefs="true"
     target="install" />
 </target>
Executando...
●   # phing
●   # phing -f appbuild.xml
●   # phing nossotarget
Instalando...
●   pear
    # pear channel-discover
    pear.phing.info
    # pear install -a phing/phing


●   composer
    phing/phing
Obrigado
http://duodra.co

More Related Content

What's hot

The Peanut Butter Cup of Web-dev: Plack and single page web apps
The Peanut Butter Cup of Web-dev: Plack and single page web appsThe Peanut Butter Cup of Web-dev: Plack and single page web apps
The Peanut Butter Cup of Web-dev: Plack and single page web apps
John Anderson
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress plugin
Anthony Montalbano
 
JavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the PlatformJavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the Platform
Robert Nyman
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
Magento Dev
 
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Cirdes Filho
 

What's hot (20)

Alfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAVAlfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAV
 
What happens in laravel 4 bootstraping
What happens in laravel 4 bootstrapingWhat happens in laravel 4 bootstraping
What happens in laravel 4 bootstraping
 
HTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & socketsHTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & sockets
 
The Peanut Butter Cup of Web-dev: Plack and single page web apps
The Peanut Butter Cup of Web-dev: Plack and single page web appsThe Peanut Butter Cup of Web-dev: Plack and single page web apps
The Peanut Butter Cup of Web-dev: Plack and single page web apps
 
Dependency management in Magento with Composer
Dependency management in Magento with ComposerDependency management in Magento with Composer
Dependency management in Magento with Composer
 
Search 500-video-clips
Search 500-video-clipsSearch 500-video-clips
Search 500-video-clips
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress plugin
 
JavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the PlatformJavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the Platform
 
1. Hello Popescu in Laravel
1. Hello Popescu in Laravel1. Hello Popescu in Laravel
1. Hello Popescu in Laravel
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
 
2.hello popescu2 in Laravel
2.hello popescu2 in Laravel2.hello popescu2 in Laravel
2.hello popescu2 in Laravel
 
Hacking ansible
Hacking ansibleHacking ansible
Hacking ansible
 
jAPS 2 0 - Presentation Layer Comparison
jAPS 2 0 - Presentation Layer ComparisonjAPS 2 0 - Presentation Layer Comparison
jAPS 2 0 - Presentation Layer Comparison
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui framework
 
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
 
Dive into Play Framework
Dive into Play FrameworkDive into Play Framework
Dive into Play Framework
 
V2 and beyond
V2 and beyondV2 and beyond
V2 and beyond
 
Continuous deployment of puppet modules
Continuous deployment of puppet modulesContinuous deployment of puppet modules
Continuous deployment of puppet modules
 
Django
DjangoDjango
Django
 
Codigo
CodigoCodigo
Codigo
 

Similar to Building com Phing - 7Masters PHP

Continous delivery with Jenkins and Chef
Continous delivery with Jenkins and ChefContinous delivery with Jenkins and Chef
Continous delivery with Jenkins and Chef
defrag2
 
symfony on action - WebTech 207
symfony on action - WebTech 207symfony on action - WebTech 207
symfony on action - WebTech 207
patter
 
Head First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & ApplicationHead First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & Application
Jace Ju
 
IzPack at LyonJUG'11
IzPack at LyonJUG'11IzPack at LyonJUG'11
IzPack at LyonJUG'11
julien.ponge
 

Similar to Building com Phing - 7Masters PHP (20)

Write php deploy everywhere
Write php deploy everywhereWrite php deploy everywhere
Write php deploy everywhere
 
Phing
PhingPhing
Phing
 
Write php deploy everywhere tek11
Write php deploy everywhere   tek11Write php deploy everywhere   tek11
Write php deploy everywhere tek11
 
Continous delivery with Jenkins and Chef
Continous delivery with Jenkins and ChefContinous delivery with Jenkins and Chef
Continous delivery with Jenkins and Chef
 
Php Power Tools
Php Power ToolsPhp Power Tools
Php Power Tools
 
Web-Performance
Web-PerformanceWeb-Performance
Web-Performance
 
Building and Deploying PHP apps with Phing
Building and Deploying PHP apps with PhingBuilding and Deploying PHP apps with Phing
Building and Deploying PHP apps with Phing
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
Ant vs Phing
Ant vs PhingAnt vs Phing
Ant vs Phing
 
Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014Resource Registries: Plone Conference 2014
Resource Registries: Plone Conference 2014
 
Resource registries plone conf 2014
Resource registries plone conf 2014Resource registries plone conf 2014
Resource registries plone conf 2014
 
Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP Applications
 
Improving qa on php projects
Improving qa on php projectsImproving qa on php projects
Improving qa on php projects
 
symfony on action - WebTech 207
symfony on action - WebTech 207symfony on action - WebTech 207
symfony on action - WebTech 207
 
Mojolicious - A new hope
Mojolicious - A new hopeMojolicious - A new hope
Mojolicious - A new hope
 
Codeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept ImplementationCodeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept Implementation
 
Deployment Tactics
Deployment TacticsDeployment Tactics
Deployment Tactics
 
Head First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & ApplicationHead First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & Application
 
IzPack at LyonJUG'11
IzPack at LyonJUG'11IzPack at LyonJUG'11
IzPack at LyonJUG'11
 
Phing101 or How to staff a build orchestra
Phing101 or How to staff a build orchestraPhing101 or How to staff a build orchestra
Phing101 or How to staff a build orchestra
 

More from iMasters

More from iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 

Building com Phing - 7Masters PHP

  • 1. Building com Phing (em 7 minutos) Duodraco PHPSP Arizona
  • 2. Build em PHP? ● Build = automação de processos – Testes e artefatos de QA – Deployment – Atualização – Distribuição – Verificação
  • 3. Phing ● PHing Is Not Gnumake ● http://phing.info ● Sintaxe do Apache Ant – Buildfile com XML ● Lógica ● Tarefas Core ● Tarefas Opcionais
  • 4. Estrutura <project default=””> <target name=””> <task_a param=””/> <task_b param=””> <aux name=”” value=””/> </task_b> </target> </project
  • 5. Copiando o projeto... <target name=”le_deploy”> <copy todir=”/var/www”> <fileset dir="."> <exclude name=".git" /> </fileset> </copy> </target>
  • 6. PHPUnit... <target name=”phpunit”> <phpunit bootstrap="src/autoload.php" codecoverage="true" haltonfailure="true" haltonerror="true"> <formatter type="plain" usefile="false"/> <batchtest> <fileset dir="tests"> <include name="**/*Test*.php"/> </fileset> </batchtest> </phpunit> </target>
  • 7. Checando dependencias <target name=”check_dep”> <composer command=”update”/> </target> ● composer.json { require:{ “php”:”>5.4.0”, “ext-imagick”:”*”, “monolog/monolog”:”0.8.*” } }
  • 8. Variáveis ● build.properties app.version=13.04 path.log=/var/log/myapps/app.log path.webroot=/var/www ● build.xml <properties file=”build.properties”/> <echo msg=”App ver. ${app.version}”/> <copy todir=”${path.webroot}”> ...
  • 9. Combinando tarefas <target name=”phpunit”> … <target name=”pdepend”> … <target name=”phpcpd”> … <target name=”qa” depends=”phpcpd,pdepend,phpunit”>
  • 10. Organizando <target name=”qa”> <phing phingfile="qa.xml" inheritRefs="true" target="qa-tests" /> </target> <target name=”deploy”> <phing phingfile="deploy.xml" inheritRefs="true" target="install" /> </target>
  • 11. Executando... ● # phing ● # phing -f appbuild.xml ● # phing nossotarget
  • 12. Instalando... ● pear # pear channel-discover pear.phing.info # pear install -a phing/phing ● composer phing/phing