Abläufe mit Phing automatisieren
-
Upload
christian-muench -
Category
Technology
-
view
2.270 -
download
3
Transcript of 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
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
...
3 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Build Systeme auf dem Markt
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.
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á
6 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Aufruf über Kommandozeile
7 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Auflisten der vorhandenen Targets
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
9 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Einfache phing Datei
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
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
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“
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.
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
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.
16 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Timestamp Task
17 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Mapper
18 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Regex Mapper
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:
20 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Adhoc Task
21 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Eigene Task Klasse im Projekt
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.
23 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Abfragen / Conditions
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.
25 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Referenzieren von Typen
26 netz98 new media GmbH · Haifa-Allee 2 · 55128 Mainz · [email protected] · www.netz98.de
Beispiel Task mit FileList Unterstützung
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