Abläufe mit PHP und Phing automatisieren
-
Upload
christian-muench -
Category
Technology
-
view
2.032 -
download
0
description
Transcript of Abläufe mit PHP und Phing automatisieren
barcamp Mainz 2011 1
Abläufe mit PHP und phing automatisieren
barcamp Mainz 2011 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
...
barcamp Mainz 2011 3
Build Systeme auf dem Markt
barcamp Mainz 2011 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.
barcamp Mainz 2011 5
Installation
$> pear channel-discover pear.phing.info
$> pear install phing/phing
Voilá
barcamp Mainz 2011 6
Aufruf über Kommandozeile
barcamp Mainz 2011 7
Auflisten der vorhandenen Targets
barcamp Mainz 2011 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-
barcamp Mainz 2011 9
Einfache phing Datei
barcamp Mainz 2011 10
BuildIn Tasks
AdhocTaskdefTask
AdhocTypedefTask
AppendTask
AvailableTask
ChmodTask
ChownTask
ConditionTask
CopyTask
IfTask
ImportTask
IncludePathTask
InputTask
MkdirTask
MoveTask
PhingTask
PhingCallTask
barcamp Mainz 2011 11
Optionale Tasks
DbDeployTask
CoverageMergerTask
CoverageReportTask
CoverageSetupTask
ExportPropertiesTask
FileHashTask
FileSizeTask
FtpDeployTask
PhpCpdTask
PhpDocumentorTask
PhpDocumentorExternalTask
PhpLintTask
PHPUnitTask
PHPUnitReport
ScpTask
SimpleTestTask
barcamp Mainz 2011 12
Property Dateien
Orientiert sich an Java Property Dateien
Einfache Struktur
Ant-Kompatibel
Verwendung von System Properties ist möglich
barcamp Mainz 2011 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
barcamp Mainz 2011 14
Einbinden der Property Datei
Das Element „property“ kann innerhalb von „project“ und innerhalb von „target“ augerufen werden.
barcamp Mainz 2011 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.
barcamp Mainz 2011 16
Timestamp Task
barcamp Mainz 2011 17
Mapper
barcamp Mainz 2011 18
Regex Mapper
barcamp Mainz 2011 19
Eigene Tasks erstellen
Task innerhalb von PEAR/phing bereitstellen
AdHoc Tasks
Task-Klassen innerhalb des eigenen Projekts
Drei Möglichkeiten:
barcamp Mainz 2011 20
Adhoc Task
barcamp Mainz 2011 21
Eigene Task Klasse im Projekt
barcamp Mainz 2011 22
Filter
Können auf Sets von Dateien angewandt werden.
Nützlich zum entfernen von Entwicklungsinformationen vor der Auslieferung an den Kunden
Mögliche Einsatzgebiete:
barcamp Mainz 2011 23
Abfragen / Conditions
barcamp Mainz 2011 24
Typen
„Typen“ sind eher „Objekte“
Werden durch eine Schachtelung von XML Elementen definiert
Typen werden immer an einen Task übergeben.
barcamp Mainz 2011 25
Referenzieren von Typen
barcamp Mainz 2011 26
Beispiel Task mit FileList Unterstützung
barcamp Mainz 2011 27
Live Simulation Deployment
Simuliert ein GIT Remote
Kundenserver mit wwwroot und Deploy-Scripten
Lokales Entwicklungsprojekt mit GIT
barcamp Mainz 2011 28
Kundenserver Simulation
wwwrootDeploy scripts
Konfiguration:GIT Remote, Pfad zu wwwroot
Target „deploy“
Target „post_deploy“z.B. Cache leeren
barcamp Mainz 2011 29
Tipp! PHPStorm Code Completion
Bildquelle: http://blog.jetbrains.com/webide/2011/04/phing-support/
barcamp Mainz 2011 30
Danke
http://phing.info - Die Phing Projektseite
http://github.com/cmuench/phing-library
Weiterführende Informationen
Danke!und viel Spaß beim abschaffen von
Checklisten.
Twitter: twitter.com/cmuench