Abläufe mit PHP und Phing automatisieren

Post on 06-Jul-2015

2.032 views 0 download

description

Slides meiner Barcamp Session. Barcamp Mainz 2011.

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