Abläufe mit Phing automatisieren

Post on 06-Jul-2015

2.270 views 3 download

Transcript of Abläufe mit Phing automatisieren

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

Abläufe mit phing automatisieren

von

Christian Münch

2 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

...

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

Build Systeme auf dem Markt

4 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.

5 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á

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

Aufruf über Kommandozeile

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

Auflisten der vorhandenen Targets

8 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

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

Einfache phing Datei

10 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · 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

11 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · 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

12 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“

13 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.

14 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

15 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.

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

Timestamp Task

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

Mapper

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

Regex Mapper

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

Eigene Tasks erstellen

Task innerhalb von PEAR/phing bereitstellen

AdHoc Tasks

Task-Klassen innerhalb des eigenen Projekts

Drei Möglichkeiten:

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

Adhoc Task

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

Eigene Task Klasse im Projekt

22 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.

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

Abfragen / Conditions

24 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.

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

Referenzieren von Typen

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

Beispiel Task mit FileList Unterstützung

27 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · info@netz98.de · 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