Abläufe mit Phing automatisieren

27
netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de 1 Abläufe mit phing automatisieren von Christian Münch

Transcript of Abläufe mit Phing automatisieren

Page 1: Abläufe mit Phing automatisieren

netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de1

Abläufe mit phing automatisieren

von

Christian Münch

Page 2: Abläufe mit Phing automatisieren

2 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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

...

Page 3: Abläufe mit Phing automatisieren

3 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Build Systeme auf dem Markt

Page 4: Abläufe mit Phing automatisieren

4 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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.

Page 5: Abläufe mit Phing automatisieren

5 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Installation

$> pear channel-discover pear.phing.info

$> pear install phing/phing

Voilá

Page 6: Abläufe mit Phing automatisieren

6 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Aufruf über Kommandozeile

Page 7: Abläufe mit Phing automatisieren

7 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Auflisten der vorhandenen Targets

Page 8: Abläufe mit Phing automatisieren

8 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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

Page 9: Abläufe mit Phing automatisieren

9 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Einfache phing Datei

Page 10: Abläufe mit Phing automatisieren

10 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

BuildIn Tasks

AdhocTaskdefTask

AdhocTypedefTask

AppendTask

AvailableTask

ChmodTask

ChownTask

ConditionTask

CopyTask

CvsTask

CvsPassTask

DeleteTask

EchoTask

ExecTask

ExitTask

ForeachTask

IfTask

ImportTask

IncludePathTask

InputTask

MkdirTask

MoveTask

PhingTask

PhingCallTask

PhpEvalTask

PropertyTask

PropertyPromptTask

ReflexiveTask

ResolvePathTask

TaskdefTask

TouchTask

TstampTask

TypedefTask

UpToDateTask

XsltTask

Page 11: Abläufe mit Phing automatisieren

11 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Optionale Tasks

DbDeployTask

CoverageMergerTask

CoverageReportTask

CoverageSetupTask

ExportPropertiesTask

FileHashTask

FileSizeTask

FtpDeployTask

IoncubeEncoderTask

IoncubeLicenseTask

JslLintTask

JsMinTask

PDOSQLExecTask

PearPackageTask

PearPackage2Task

PharPackageTask

PhkPackageTask

PhpCodeSnifferTask

PhpCpdTask

PhpDocumentorTask

PhpDocumentorExternalTask

PhpLintTask

PHPUnitTask

PHPUnitReport

ScpTask

SimpleTestTask

SvnCheckoutTask

SvnCommitTask

SvnExportTask

SvnLastRevisionTask

SvnUpdateTask

TarTask

UntarTask

UnzipTask

VersionTask

XmlLintTask

XmlPropertyTask

ZendCodeAnalyzerTask

ZipTask

Page 12: Abläufe mit Phing automatisieren

12 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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“

Page 13: Abläufe mit Phing automatisieren

13 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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.

Page 14: Abläufe mit Phing automatisieren

14 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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

Page 15: Abläufe mit Phing automatisieren

15 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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.

Page 16: Abläufe mit Phing automatisieren

16 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Timestamp Task

Page 17: Abläufe mit Phing automatisieren

17 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Mapper

Page 18: Abläufe mit Phing automatisieren

18 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Regex Mapper

Page 19: Abläufe mit Phing automatisieren

19 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

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 Phing automatisieren

20 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Adhoc Task

Page 21: Abläufe mit Phing automatisieren

21 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Eigene Task Klasse im Projekt

Page 22: Abläufe mit Phing automatisieren

22 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · 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.

Page 23: Abläufe mit Phing automatisieren

23 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Abfragen / Conditions

Page 24: Abläufe mit Phing automatisieren

24 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

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 Phing automatisieren

25 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Referenzieren von Typen

Page 26: Abläufe mit Phing automatisieren

26 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Beispiel Task mit FileList Unterstützung

Page 27: Abläufe mit Phing automatisieren

27 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de

Danke

http://phing.info - Die Phing Projektseite

http://phing.tigris.org/files/documents/995/8019/PhingGuide_en.pdf

Weiterführende Informationen

Danke!

Und jetzt eine Erfrischung

Twitter: twitter.com/cmuench