Abläufe mit PHP und Phing automatisieren

30
barcamp Mainz 2011 1 Abläufe mit PHP und phing automatisieren

description

Slides meiner Barcamp Session. Barcamp Mainz 2011.

Transcript of Abläufe mit PHP und Phing automatisieren

Page 1: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 1

Abläufe mit PHP und phing automatisieren

Page 2: 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

...

Page 3: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 3

Build Systeme auf dem Markt

Page 4: Abläufe mit PHP und Phing automatisieren

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.

Page 5: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 5

Installation

$> pear channel-discover pear.phing.info

$> pear install phing/phing

Voilá

Page 6: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 6

Aufruf über Kommandozeile

Page 7: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 7

Auflisten der vorhandenen Targets

Page 8: Abläufe mit PHP und Phing automatisieren

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-

Page 9: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 9

Einfache phing Datei

Page 10: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 10

BuildIn Tasks

AdhocTaskdefTask

AdhocTypedefTask

AppendTask

AvailableTask

ChmodTask

ChownTask

ConditionTask

CopyTask

IfTask

ImportTask

IncludePathTask

InputTask

MkdirTask

MoveTask

PhingTask

PhingCallTask

Page 11: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 11

Optionale Tasks

DbDeployTask

CoverageMergerTask

CoverageReportTask

CoverageSetupTask

ExportPropertiesTask

FileHashTask

FileSizeTask

FtpDeployTask

PhpCpdTask

PhpDocumentorTask

PhpDocumentorExternalTask

PhpLintTask

PHPUnitTask

PHPUnitReport

ScpTask

SimpleTestTask

Page 12: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 12

Property Dateien

Orientiert sich an Java Property Dateien

Einfache Struktur

Ant-Kompatibel

Verwendung von System Properties ist möglich

Page 13: Abläufe mit PHP und Phing automatisieren

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

Page 14: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 14

Einbinden der Property Datei

Das Element „property“ kann innerhalb von „project“ und innerhalb von „target“ augerufen werden.

Page 15: Abläufe mit PHP und Phing automatisieren

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.

Page 16: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 16

Timestamp Task

Page 17: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 17

Mapper

Page 18: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 18

Regex Mapper

Page 19: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 19

Eigene Tasks erstellen

Task innerhalb von PEAR/phing bereitstellen

AdHoc Tasks

Task-Klassen innerhalb des eigenen Projekts

Drei Möglichkeiten:

Page 20: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 20

Adhoc Task

Page 21: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 21

Eigene Task Klasse im Projekt

Page 22: Abläufe mit PHP und Phing automatisieren

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:

Page 23: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 23

Abfragen / Conditions

Page 24: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 24

Typen

„Typen“ sind eher „Objekte“

Werden durch eine Schachtelung von XML Elementen definiert

Typen werden immer an einen Task übergeben.

Page 25: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 25

Referenzieren von Typen

Page 26: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 26

Beispiel Task mit FileList Unterstützung

Page 27: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 27

Live Simulation Deployment

Simuliert ein GIT Remote

Kundenserver mit wwwroot und Deploy-Scripten

Lokales Entwicklungsprojekt mit GIT

Page 28: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 28

Kundenserver Simulation

wwwrootDeploy scripts

Konfiguration:GIT Remote, Pfad zu wwwroot

Target „deploy“

Target „post_deploy“z.B. Cache leeren

Page 29: Abläufe mit PHP und Phing automatisieren

barcamp Mainz 2011 29

Tipp! PHPStorm Code Completion

Bildquelle: http://blog.jetbrains.com/webide/2011/04/phing-support/

Page 30: Abläufe mit PHP und Phing automatisieren

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