Abläufe mit PHP und phing automatisieren
Für was braucht man Build-Systeme? <ul><li>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
... </li></ul>
Build Systeme auf dem Markt
phing <ul>PHing Is Not GNU make; it's a project build system based on Apache Ant. You can do anything with it that you cou...
Installation <ul>$> pear channel-discover pear.phing.info $> pear install phing/phing Voilá </ul>
Aufruf über Kommandozeile
Auflisten der vorhandenen Targets
Begrifflichkeiten <ul><li>Projekt </li><ul><li>Meta-Informationen
Standard Target </li></ul><li>Target </li><ul><li>Sammlung von Projektkomponenten z.B. Tasks
Regelt Abhängigkeiten zwischen Targets </li></ul><li>Task </li><ul><li>PHP Code der eine bestimmte Aufgabe ausführt </li><...
Filter </li><ul><li>Verändern z.B. Inhalte von Dateien </li></ul><li>Parser
Property </li></ul>
Einfache phing Datei
BuildIn Tasks <ul><li>AdhocTaskdefTask
AdhocTypedefTask
AppendTask
AvailableTask
ChmodTask
ChownTask
ConditionTask
CopyTask
CvsTask
CvsPassTask
DeleteTask
EchoTask
Nächste SlideShare
Wird geladen in …5
×

Abläufe mit PHP und Phing automatisieren

2.392 Aufrufe

Veröffentlicht am

Slides meiner Barcamp Session.

Barcamp Mainz 2011.

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.392
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Abläufe mit PHP und Phing automatisieren

  1. 1. Abläufe mit PHP und phing automatisieren
  2. 2. Für was braucht man Build-Systeme? <ul><li>Kompilieren von Quellcode (im PHP Umfeld eher weniger anzutreffen)
  3. 3. Linken einer ausführbaren Datei (im PHP Umfeld ebenfalls weniger anzutreffen)
  4. 4. Vorbereiten eines (idealerweise plattformunabhängigen) Rollouts
  5. 5. Automatische Erstellung von Dokumentationen
  6. 6. Erstellen von Distributionen
  7. 7. ... </li></ul>
  8. 8. Build Systeme auf dem Markt
  9. 9. phing <ul>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 &quot;task&quot; classes make it an easy-to-use and highly flexible build framework. </ul>
  10. 10. Installation <ul>$> pear channel-discover pear.phing.info $> pear install phing/phing Voilá </ul>
  11. 11. Aufruf über Kommandozeile
  12. 12. Auflisten der vorhandenen Targets
  13. 13. Begrifflichkeiten <ul><li>Projekt </li><ul><li>Meta-Informationen
  14. 14. Standard Target </li></ul><li>Target </li><ul><li>Sammlung von Projektkomponenten z.B. Tasks
  15. 15. Regelt Abhängigkeiten zwischen Targets </li></ul><li>Task </li><ul><li>PHP Code der eine bestimmte Aufgabe ausführt </li></ul><li>Type </li><ul><li>Datentyp z.B. FileList, FileSet oder eine DB-Verbindung </li></ul><li>Mapper
  16. 16. Filter </li><ul><li>Verändern z.B. Inhalte von Dateien </li></ul><li>Parser
  17. 17. Property </li></ul>
  18. 18. Einfache phing Datei
  19. 19. BuildIn Tasks <ul><li>AdhocTaskdefTask
  20. 20. AdhocTypedefTask
  21. 21. AppendTask
  22. 22. AvailableTask
  23. 23. ChmodTask
  24. 24. ChownTask
  25. 25. ConditionTask
  26. 26. CopyTask
  27. 27. CvsTask
  28. 28. CvsPassTask
  29. 29. DeleteTask
  30. 30. EchoTask
  31. 31. ExecTask
  32. 32. ExitTask
  33. 33. ForeachTask </li></ul><ul><li>IfTask
  34. 34. ImportTask
  35. 35. IncludePathTask
  36. 36. InputTask
  37. 37. MkdirTask
  38. 38. MoveTask
  39. 39. PhingTask
  40. 40. PhingCallTask
  41. 41. PhpEvalTask
  42. 42. PropertyTask
  43. 43. PropertyPromptTask
  44. 44. ReflexiveTask
  45. 45. ResolvePathTask
  46. 46. TaskdefTask
  47. 47. TouchTask
  48. 48. TstampTask
  49. 49. TypedefTask
  50. 50. UpToDateTask
  51. 51. XsltTask </li></ul>
  52. 52. Optionale Tasks <ul><li>DbDeployTask
  53. 53. CoverageMergerTask
  54. 54. CoverageReportTask
  55. 55. CoverageSetupTask
  56. 56. ExportPropertiesTask
  57. 57. FileHashTask
  58. 58. FileSizeTask
  59. 59. FtpDeployTask
  60. 60. IoncubeEncoderTask
  61. 61. IoncubeLicenseTask
  62. 62. JslLintTask
  63. 63. JsMinTask
  64. 64. PDOSQLExecTask
  65. 65. PearPackageTask
  66. 66. PearPackage2Task
  67. 67. PharPackageTask
  68. 68. PhkPackageTask
  69. 69. PhpCodeSnifferTask </li></ul><ul><li>PhpCpdTask
  70. 70. PhpDocumentorTask
  71. 71. PhpDocumentorExternalTask
  72. 72. PhpLintTask
  73. 73. PHPUnitTask
  74. 74. PHPUnitReport
  75. 75. ScpTask
  76. 76. SimpleTestTask
  77. 77. SvnCheckoutTask
  78. 78. SvnCommitTask
  79. 79. SvnExportTask
  80. 80. SvnLastRevisionTask
  81. 81. SvnUpdateTask
  82. 82. TarTask
  83. 83. UntarTask
  84. 84. UnzipTask
  85. 85. VersionTask
  86. 86. XmlLintTask
  87. 87. XmlPropertyTask
  88. 88. ZendCodeAnalyzerTask
  89. 89. ZipTask </li></ul>
  90. 90. Property Dateien <ul><li>Orientiert sich an Java Property Dateien
  91. 91. Einfache Struktur
  92. 92. Ant-Kompatibel
  93. 93. Verwendung von System Properties ist möglich
  94. 94. Abarbeitung erfolgt „von Oben nach Unten“ </li></ul>
  95. 95. BuildIn Properties <ul><li>application.startdir / Aktuelles Arbeitsverzeichnis
  96. 96. host.arch / Architektur des Systems – Nicht unter Windows
  97. 97. host.domain DNS Domäne – Nicht unter windows
  98. 98. host.fstype / Dateisystem – Werte können sein UNIX, WINNT and WIN32
  99. 99. host.name / Name des Rechners
  100. 100. host.os.release / Kernelversion – Nicht unter Windows
  101. 101. host.os.version / Langer Betriebssystemname – Nicht unter Windows
  102. 102. line.separator / Zeilenumbruchzeichen
  103. 103. php.classpath / Die Umgebungsvariable PHP_CLASSPATH
  104. 104. php.version / Version des PHP Interpreters
  105. 105. phing.buildfile / Voller Pfad zur aktuellen Build-Datei
  106. 106. phing.id / Prozess-ID der aktuellen Phing Instanz
  107. 107. phing.version / Phing Version
  108. 108. project.name / Projektname
  109. 109. project.basedir / Basisverzeichnis des aktuellen Projekts
  110. 110. project.description / Beschreibung des aktuellen Projekts (sofern vorhanden)
  111. 111. user.home / Der Wert der Umgebungsvariablen HOME. </li></ul>
  112. 112. Einbinden der Property Datei <ul><li>Das Element „property“ kann innerhalb von „project“ und innerhalb von „target“ augerufen werden.
  113. 113. Ein mehrfaches Aufrufen einer Property-Datei ist möglich </li></ul>
  114. 114. 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.
  115. 115. Timestamp Task
  116. 116. Mapper
  117. 117. Regex Mapper
  118. 118. Eigene Tasks erstellen <ul><li>Task innerhalb von PEAR/phing bereitstellen </li></ul><ul><li>AdHoc Tasks
  119. 119. Task-Klassen innerhalb des eigenen Projekts </li></ul>Drei Möglichkeiten:
  120. 120. Adhoc Task
  121. 121. Eigene Task Klasse im Projekt
  122. 122. Filter <ul><li>Können auf Sets von Dateien angewandt werden.
  123. 123. Nützlich zum entfernen von Entwicklungsinformationen vor der Auslieferung an den Kunden
  124. 124. Mögliche Einsatzgebiete: Packen von Javascript und CSS, Entfernen von Kommentaren usw. </li></ul>
  125. 125. Abfragen / Conditions
  126. 126. Typen <ul><li>„Typen“ sind eher „Objekte“
  127. 127. Werden durch eine Schachtelung von XML Elementen definiert
  128. 128. Typen werden immer an einen Task übergeben. </li></ul>
  129. 129. Referenzieren von Typen
  130. 130. Beispiel Task mit FileList Unterstützung
  131. 131. Live Simulation Deployment Simuliert ein GIT Remote Kundenserver mit wwwroot und Deploy-Scripten Lokales Entwicklungsprojekt mit GIT
  132. 132. Kundenserver Simulation wwwroot Deploy scripts Konfiguration: GIT Remote, Pfad zu wwwroot Target „deploy“ Target „post_deploy“ z.B. Cache leeren
  133. 133. Tipp! PHPStorm Code Completion Bildquelle: http://blog.jetbrains.com/webide/2011/04/phing-support/
  134. 134. Danke <ul><li>http://phing.info - Die Phing Projektseite
  135. 135. http://github.com/cmuench/phing-library </li></ul>Weiterführende Informationen Danke! und viel Spaß beim abschaffen von Checklisten. Twitter: twitter.com/cmuench

×