SlideShare a Scribd company logo
1 of 27
Download to read offline
Abläufe mit phing automatisieren

                                von

                      Christian Münch




1   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Für was braucht man Build-Systeme?



    Kompilieren von Quellcode (im PHP Umfeld eher weniger anzutreffen)
    Linken einer ausführbaren Datei (im PHP Umfeld ebenfalls weniger anzutreffen)
    Vorbereiten eines (idealerweise plattformunabhängigen) Rollouts
    Automatische Erstellung von Dokumentationen
    Erstellen von Distributionen
    ...




2          netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Build Systeme auf dem Markt




3   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
phing




    PHing Is Not GNU make; it's a project build system
    based on Apache Ant. You can do anything with it that
    you could do with a traditional build system like GNU
    make, and its use of simple XML build files and
    extensible PHP "task" classes make it an easy-to-use
    and highly flexible build framework.




4         netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Installation



    $> pear channel-discover pear.phing.info
    $> pear install phing/phing


    Voilá




5           netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Aufruf über Kommandozeile




6   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Auflisten der vorhandenen Targets




7   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Begrifflichkeiten

    Projekt
         Meta-Informationen
         Standard Target
    Target
         Sammlung von Projektkomponenten z.B. Tasks
         Regelt Abhängigkeiten zwischen Targets
    Task
         PHP Code der eine bestimmte Aufgabe ausführt
    Type
         Datentyp z.B. FileList, FileSet oder eine DB-Verbindung
    Mapper


    Filter
         Verändern z.B. Inhalte von Dateien
    Parser
    Property


8             netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Einfache phing Datei




9   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
BuildIn Tasks


     AdhocTaskdefTask                              IfTask
                                                   ImportTask
     AdhocTypedefTask
                                                   IncludePathTask
     AppendTask                                    InputTask
     AvailableTask                                 MkdirTask

     ChmodTask                                     MoveTask
                                                   PhingTask
     ChownTask
                                                   PhingCallTask
     ConditionTask                                 PhpEvalTask
     CopyTask                                      PropertyTask
                                                   PropertyPromptTask
     CvsTask
                                                   ReflexiveTask
     CvsPassTask
                                                   ResolvePathTask
     DeleteTask                                    TaskdefTask
     EchoTask                                      TouchTask
                                                   TstampTask
     ExecTask
                                                   TypedefTask
     ExitTask
                                                   UpToDateTask
     ForeachTask                                   XsltTask



10          netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Optionale Tasks


     DbDeployTask                                      PhpCpdTask
                                                       PhpDocumentorTask
     CoverageMergerTask
                                                       PhpDocumentorExternalTask
     CoverageReportTask
                                                       PhpLintTask
     CoverageSetupTask
                                                       PHPUnitTask
     ExportPropertiesTask                              PHPUnitReport
     FileHashTask                                      ScpTask

     FileSizeTask                                      SimpleTestTask
                                                       SvnCheckoutTask
     FtpDeployTask
                                                       SvnCommitTask
     IoncubeEncoderTask
                                                       SvnExportTask
     IoncubeLicenseTask
                                                       SvnLastRevisionTask
     JslLintTask                                       SvnUpdateTask
     JsMinTask                                         TarTask
     PDOSQLExecTask                                    UntarTask

     PearPackageTask                                   UnzipTask
                                                       VersionTask
     PearPackage2Task
                                                       XmlLintTask
     PharPackageTask
                                                       XmlPropertyTask
     PhkPackageTask                                    ZendCodeAnalyzerTask
     PhpCodeSnifferTask                                ZipTask



11               netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Property Dateien




     Orientiert sich an Java Property Dateien
     Einfache Struktur
     Ant-Kompatibel
     Verwendung von System Properties ist möglich
     Abarbeitung erfolgt „von Oben nach Unten“




12         netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
BuildIn Properties


     application.startdir / Aktuelles Arbeitsverzeichnis
     host.arch / Architektur des Systems – Nicht unter Windows
     host.domain DNS Domäne – Nicht unter windows
     host.fstype / Dateisystem – Werte können sein UNIX, WINNT and WIN32
     host.name / Name des Rechners
     host.os.release / Kernelversion – Nicht unter Windows
     host.os.version / Langer Betriebssystemname – Nicht unter Windows
     line.separator / Zeilenumbruchzeichen
     php.classpath / Die Umgebungsvariable PHP_CLASSPATH
     php.version / Version des PHP Interpreters
     phing.buildfile / Voller Pfad zur aktuellen Build-Datei
     phing.id / Prozess-ID der aktuellen Phing Instanz
     phing.version / Phing Version
     project.name / Projektname
     project.basedir / Basisverzeichnis des aktuellen Projekts
     project.description / Beschreibung des aktuellen Projekts (sofern vorhanden)
     user.home / Der Wert der Umgebungsvariablen HOME.



13             netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Einbinden der Property Datei




     Das Element „property“ kann innerhalb von „project“ und innerhalb von „target“
     augerufen werden.
     Ein mehrfaches Aufrufen einer Property-Datei ist möglich




14         netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Auslagern von Targets




     Gerade bei komplexen Build-Scripten bietet es sich an die diese auszulagern
     und mittels des ImportTask in die build.xml Datei zu importieren.

15                netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Timestamp Task




16   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Mapper




17   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Regex Mapper




18   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Eigene Tasks erstellen

     Drei Möglichkeiten:


         Task innerhalb von PEAR/phing bereitstellen




         AdHoc Tasks
         Task-Klassen innerhalb des eigenen Projekts




19               netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Adhoc Task




20   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Eigene Task Klasse im Projekt




21   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Filter



                                             Können auf Sets von Dateien
                                             angewandt werden.
                                             Nützlich zum entferenen von
                                             Entwicklungsinformationen vor der
                                             Auslieferung an den Kunden
                                             Mögliche Einsatzgebietet: Packen
                                             von JavaScript und CSS, Entfernen
                                             von Kommentaren usw.




22   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Abfragen / Conditions




23   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Typen



                                             „Typen“ sind eher „Objekte“
                                             Werden durch eine Schachtelung
                                             von XML Elementen definiert
                                             Typen werden immer an einen Task
                                             übergeben.




24   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Referenzieren von Typen




25   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Beispiel Task mit FileList Unterstützung




26   netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
Danke




                                    Danke!
                             Und jetzt eine Erfrischung



     Weiterführende Informationen
        http://phing.info - Die Phing Projektseite
        http://phing.tigris.org/files/documents/995/8019/PhingGuide_en.pdf


     Twitter: twitter.com/cmuench

27               netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de

More Related Content

Viewers also liked

Elternabend
ElternabendElternabend
Elternabend1aW
 
Filtres
FiltresFiltres
Filtresinia85
 
Inhaltsverzeichnis: amzn.to/emailBuch
Inhaltsverzeichnis: amzn.to/emailBuchInhaltsverzeichnis: amzn.to/emailBuch
Inhaltsverzeichnis: amzn.to/emailBuchRene Kulka
 
Rassismus story
Rassismus storyRassismus story
Rassismus storyhaber
 
Wahlen in Brasilien 2014
Wahlen in Brasilien 2014Wahlen in Brasilien 2014
Wahlen in Brasilien 2014Leo Fried
 
PROFACTOR Gruppe | ABRASCAN
PROFACTOR Gruppe | ABRASCANPROFACTOR Gruppe | ABRASCAN
PROFACTOR Gruppe | ABRASCANPROFACTOR Group
 
Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?
Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?
Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?qreamteam
 
Social Media Kampagnen monitoren
Social Media Kampagnen monitorenSocial Media Kampagnen monitoren
Social Media Kampagnen monitorenagenturblog
 
Public Relations im Zeitalter von Social Media, markengold PR
Public Relations im Zeitalter von Social Media, markengold PRPublic Relations im Zeitalter von Social Media, markengold PR
Public Relations im Zeitalter von Social Media, markengold PRTwittwoch e.V.
 

Viewers also liked (15)

Elternabend
ElternabendElternabend
Elternabend
 
Filtres
FiltresFiltres
Filtres
 
Inhaltsverzeichnis: amzn.to/emailBuch
Inhaltsverzeichnis: amzn.to/emailBuchInhaltsverzeichnis: amzn.to/emailBuch
Inhaltsverzeichnis: amzn.to/emailBuch
 
Stephan huber
Stephan huberStephan huber
Stephan huber
 
Rassismus story
Rassismus storyRassismus story
Rassismus story
 
June Web
June WebJune Web
June Web
 
Rokycany
RokycanyRokycany
Rokycany
 
Wahlen in Brasilien 2014
Wahlen in Brasilien 2014Wahlen in Brasilien 2014
Wahlen in Brasilien 2014
 
PROFACTOR Gruppe | ABRASCAN
PROFACTOR Gruppe | ABRASCANPROFACTOR Gruppe | ABRASCAN
PROFACTOR Gruppe | ABRASCAN
 
Buenas practicas
Buenas practicasBuenas practicas
Buenas practicas
 
Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?
Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?
Zitty Stadtgespräch Berlin - Kreativhauptstadt oder urbane Ödnis?
 
US9437952B2
US9437952B2US9437952B2
US9437952B2
 
Storytelling tools (1)
Storytelling tools (1)Storytelling tools (1)
Storytelling tools (1)
 
Social Media Kampagnen monitoren
Social Media Kampagnen monitorenSocial Media Kampagnen monitoren
Social Media Kampagnen monitoren
 
Public Relations im Zeitalter von Social Media, markengold PR
Public Relations im Zeitalter von Social Media, markengold PRPublic Relations im Zeitalter von Social Media, markengold PR
Public Relations im Zeitalter von Social Media, markengold PR
 

Similar to Abläufe mit Phing automatisieren

Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 
TV App Development - Überblick und Einblick
TV App Development - Überblick und EinblickTV App Development - Überblick und Einblick
TV App Development - Überblick und EinblickChristian Münch
 
z-push PHPUnconference 2009
z-push PHPUnconference 2009z-push PHPUnconference 2009
z-push PHPUnconference 2009Ingo Reinhart
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
WS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche WolkeWS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche WolkeCloudOps Summit
 
Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoopinovex GmbH
 
Integration in der Cloud mit Camel, Karaf und Cellar
Integration in der Cloud mit Camel, Karaf und CellarIntegration in der Cloud mit Camel, Karaf und Cellar
Integration in der Cloud mit Camel, Karaf und Cellarinovex GmbH
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...Marc Müller
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Infrastructure as Code mit Terraform
Infrastructure as Code mit TerraformInfrastructure as Code mit Terraform
Infrastructure as Code mit TerraformHarald Schmaldienst
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
Dzug Zope Optimized
Dzug Zope OptimizedDzug Zope Optimized
Dzug Zope OptimizedAndreas Jung
 
Open icf (open identity connector framework) @ forgerock deutsch
Open icf (open identity connector framework) @ forgerock   deutschOpen icf (open identity connector framework) @ forgerock   deutsch
Open icf (open identity connector framework) @ forgerock deutschHanns Nolan
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptRalf Schwoebel
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerIngo Reinhart
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 

Similar to Abläufe mit Phing automatisieren (20)

Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
TV App Development - Überblick und Einblick
TV App Development - Überblick und EinblickTV App Development - Überblick und Einblick
TV App Development - Überblick und Einblick
 
z-push PHPUnconference 2009
z-push PHPUnconference 2009z-push PHPUnconference 2009
z-push PHPUnconference 2009
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
WS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche WolkeWS: Uhl, Lisog - Deutsche Wolke
WS: Uhl, Lisog - Deutsche Wolke
 
Textanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und HadoopTextanalyse mit UIMA und Hadoop
Textanalyse mit UIMA und Hadoop
 
Integration in der Cloud mit Camel, Karaf und Cellar
Integration in der Cloud mit Camel, Karaf und CellarIntegration in der Cloud mit Camel, Karaf und Cellar
Integration in der Cloud mit Camel, Karaf und Cellar
 
2011 01 06 14-45 jonas schmid
2011 01 06 14-45 jonas schmid2011 01 06 14-45 jonas schmid
2011 01 06 14-45 jonas schmid
 
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Infrastructure as Code mit Terraform
Infrastructure as Code mit TerraformInfrastructure as Code mit Terraform
Infrastructure as Code mit Terraform
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
Dzug Zope Optimized
Dzug Zope OptimizedDzug Zope Optimized
Dzug Zope Optimized
 
Open icf (open identity connector framework) @ forgerock deutsch
Open icf (open identity connector framework) @ forgerock   deutschOpen icf (open identity connector framework) @ forgerock   deutsch
Open icf (open identity connector framework) @ forgerock deutsch
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-Entwickler
 
Node.js
Node.jsNode.js
Node.js
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 

More from Christian Münch

n98-magerun2 - Presentation 2020
n98-magerun2 - Presentation 2020n98-magerun2 - Presentation 2020
n98-magerun2 - Presentation 2020Christian Münch
 
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsMagento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsChristian Münch
 
Jenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-PipelinesJenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-PipelinesChristian Münch
 
Magento Headless - Stammtisch Rhein-Main
Magento Headless - Stammtisch Rhein-MainMagento Headless - Stammtisch Rhein-Main
Magento Headless - Stammtisch Rhein-MainChristian Münch
 
Continous Integration in einem Open Source Projekt
Continous Integration in einem Open Source ProjektContinous Integration in einem Open Source Projekt
Continous Integration in einem Open Source ProjektChristian Münch
 
Magento auf der Kommandozeile: n98-magerun, ein netz98 Tool
Magento auf der Kommandozeile: n98-magerun, ein netz98 ToolMagento auf der Kommandozeile: n98-magerun, ein netz98 Tool
Magento auf der Kommandozeile: n98-magerun, ein netz98 ToolChristian Münch
 
Caching in PHP - Status Quo
Caching in PHP - Status QuoCaching in PHP - Status Quo
Caching in PHP - Status QuoChristian Münch
 
INMON CMS Entwicklung / Funktionen
INMON CMS Entwicklung / FunktionenINMON CMS Entwicklung / Funktionen
INMON CMS Entwicklung / FunktionenChristian Münch
 

More from Christian Münch (10)

DDEV - Extended
DDEV - ExtendedDDEV - Extended
DDEV - Extended
 
n98-magerun2 - Presentation 2020
n98-magerun2 - Presentation 2020n98-magerun2 - Presentation 2020
n98-magerun2 - Presentation 2020
 
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsMagento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
 
12 Factor Apps with PHP
12 Factor Apps with PHP12 Factor Apps with PHP
12 Factor Apps with PHP
 
Jenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-PipelinesJenkins to Gitlab - Intelligent Build-Pipelines
Jenkins to Gitlab - Intelligent Build-Pipelines
 
Magento Headless - Stammtisch Rhein-Main
Magento Headless - Stammtisch Rhein-MainMagento Headless - Stammtisch Rhein-Main
Magento Headless - Stammtisch Rhein-Main
 
Continous Integration in einem Open Source Projekt
Continous Integration in einem Open Source ProjektContinous Integration in einem Open Source Projekt
Continous Integration in einem Open Source Projekt
 
Magento auf der Kommandozeile: n98-magerun, ein netz98 Tool
Magento auf der Kommandozeile: n98-magerun, ein netz98 ToolMagento auf der Kommandozeile: n98-magerun, ein netz98 Tool
Magento auf der Kommandozeile: n98-magerun, ein netz98 Tool
 
Caching in PHP - Status Quo
Caching in PHP - Status QuoCaching in PHP - Status Quo
Caching in PHP - Status Quo
 
INMON CMS Entwicklung / Funktionen
INMON CMS Entwicklung / FunktionenINMON CMS Entwicklung / Funktionen
INMON CMS Entwicklung / Funktionen
 

Abläufe mit Phing automatisieren

  • 1. Abläufe mit phing automatisieren von Christian Münch 1 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 2. Für was braucht man Build-Systeme? Kompilieren von Quellcode (im PHP Umfeld eher weniger anzutreffen) Linken einer ausführbaren Datei (im PHP Umfeld ebenfalls weniger anzutreffen) Vorbereiten eines (idealerweise plattformunabhängigen) Rollouts Automatische Erstellung von Dokumentationen Erstellen von Distributionen ... 2 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 3. Build Systeme auf dem Markt 3 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 4. phing PHing Is Not GNU make; it's a project build system based on Apache Ant. You can do anything with it that you could do with a traditional build system like GNU make, and its use of simple XML build files and extensible PHP "task" classes make it an easy-to-use and highly flexible build framework. 4 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 5. Installation $> pear channel-discover pear.phing.info $> pear install phing/phing Voilá 5 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 6. Aufruf über Kommandozeile 6 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 7. Auflisten der vorhandenen Targets 7 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 8. Begrifflichkeiten Projekt Meta-Informationen Standard Target Target Sammlung von Projektkomponenten z.B. Tasks Regelt Abhängigkeiten zwischen Targets Task PHP Code der eine bestimmte Aufgabe ausführt Type Datentyp z.B. FileList, FileSet oder eine DB-Verbindung Mapper Filter Verändern z.B. Inhalte von Dateien Parser Property 8 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 9. Einfache phing Datei 9 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 10. BuildIn Tasks AdhocTaskdefTask IfTask ImportTask AdhocTypedefTask IncludePathTask AppendTask InputTask AvailableTask MkdirTask ChmodTask MoveTask PhingTask ChownTask PhingCallTask ConditionTask PhpEvalTask CopyTask PropertyTask PropertyPromptTask CvsTask ReflexiveTask CvsPassTask ResolvePathTask DeleteTask TaskdefTask EchoTask TouchTask TstampTask ExecTask TypedefTask ExitTask UpToDateTask ForeachTask XsltTask 10 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 11. Optionale Tasks DbDeployTask PhpCpdTask PhpDocumentorTask CoverageMergerTask PhpDocumentorExternalTask CoverageReportTask PhpLintTask CoverageSetupTask PHPUnitTask ExportPropertiesTask PHPUnitReport FileHashTask ScpTask FileSizeTask SimpleTestTask SvnCheckoutTask FtpDeployTask SvnCommitTask IoncubeEncoderTask SvnExportTask IoncubeLicenseTask SvnLastRevisionTask JslLintTask SvnUpdateTask JsMinTask TarTask PDOSQLExecTask UntarTask PearPackageTask UnzipTask VersionTask PearPackage2Task XmlLintTask PharPackageTask XmlPropertyTask PhkPackageTask ZendCodeAnalyzerTask PhpCodeSnifferTask ZipTask 11 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 12. Property Dateien Orientiert sich an Java Property Dateien Einfache Struktur Ant-Kompatibel Verwendung von System Properties ist möglich Abarbeitung erfolgt „von Oben nach Unten“ 12 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 13. BuildIn Properties application.startdir / Aktuelles Arbeitsverzeichnis host.arch / Architektur des Systems – Nicht unter Windows host.domain DNS Domäne – Nicht unter windows host.fstype / Dateisystem – Werte können sein UNIX, WINNT and WIN32 host.name / Name des Rechners host.os.release / Kernelversion – Nicht unter Windows host.os.version / Langer Betriebssystemname – Nicht unter Windows line.separator / Zeilenumbruchzeichen php.classpath / Die Umgebungsvariable PHP_CLASSPATH php.version / Version des PHP Interpreters phing.buildfile / Voller Pfad zur aktuellen Build-Datei phing.id / Prozess-ID der aktuellen Phing Instanz phing.version / Phing Version project.name / Projektname project.basedir / Basisverzeichnis des aktuellen Projekts project.description / Beschreibung des aktuellen Projekts (sofern vorhanden) user.home / Der Wert der Umgebungsvariablen HOME. 13 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 14. Einbinden der Property Datei Das Element „property“ kann innerhalb von „project“ und innerhalb von „target“ augerufen werden. Ein mehrfaches Aufrufen einer Property-Datei ist möglich 14 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 15. Auslagern von Targets Gerade bei komplexen Build-Scripten bietet es sich an die diese auszulagern und mittels des ImportTask in die build.xml Datei zu importieren. 15 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 16. Timestamp Task 16 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 17. Mapper 17 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 18. Regex Mapper 18 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 19. Eigene Tasks erstellen Drei Möglichkeiten: Task innerhalb von PEAR/phing bereitstellen AdHoc Tasks Task-Klassen innerhalb des eigenen Projekts 19 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 20. Adhoc Task 20 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 21. Eigene Task Klasse im Projekt 21 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 22. Filter Können auf Sets von Dateien angewandt werden. Nützlich zum entferenen von Entwicklungsinformationen vor der Auslieferung an den Kunden Mögliche Einsatzgebietet: Packen von JavaScript und CSS, Entfernen von Kommentaren usw. 22 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 23. Abfragen / Conditions 23 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 24. Typen „Typen“ sind eher „Objekte“ Werden durch eine Schachtelung von XML Elementen definiert Typen werden immer an einen Task übergeben. 24 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 25. Referenzieren von Typen 25 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 26. Beispiel Task mit FileList Unterstützung 26 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de
  • 27. Danke Danke! Und jetzt eine Erfrischung Weiterführende Informationen http://phing.info - Die Phing Projektseite http://phing.tigris.org/files/documents/995/8019/PhingGuide_en.pdf Twitter: twitter.com/cmuench 27 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · www.netz98.de