Entwicklung & Design

Code automatisiert testen: Continuous Integration in TYPO3-Projekten

Continuous Integration (CI) ist ein beliebtes Verfahren in der Softwareentwicklung, um bei der Zusammenarbeit vieler Entwickler frühzeitig Fehler in der Software zu erkennen. Die Qualität des Codes lässt sich so deutlich steigern. Die etablierten CI-Verfahren und -Werkzeuge lassen sich auch auf TYPO3-Projekte übertragen. Wir zeigen, wie es geht.

Der Begriff Continous Integration oder Kontinuierliche Integration geht auf einen Artikel des Softwarearchitektur-Experten Martin Fowler zurück. CI bezeichnet die Praxis, durch häufiges „Zusammenfügen“ von Komponenten eines Softwareprojekts eine konstant hohe Qualität sicherzustellen. Allgemeine Voraussetzung für CI ist in der Regel ein Versionskontrollsystem. Über entsprechende Werkzeuge kann dann automatisiert für jeden einzelnen Commit im Versionsverwaltungssystem überprüft werden, ob er auch den im Vorfeld gesetzten Qualitätsstandards entspricht. In diesem Artikel stehen die beiden Tools Jenkins und Travis im Mittelpunkt der Betrachtung.

In Webprojekten unterscheidet sich der Build-Prozess von dem in der klassischen Softwareentwicklung. Sofern der Quelltext eines TYPO3-Projekts oder einzelner TYPO3-Erweiterungen jedoch innerhalb eines Versionsverwaltungssystems organisiert ist, lässt sich auch mit solchen Projekten problemlos CI betreiben. (Sämtliche Codebeispiele und Quelltexte zu diesem Artikel und weiterführende Code-Beispiele finden sich auf Github ).

CI-Setup in TYPO3-Projekten

Typische Build-Schritte in einem TYPO3-Projekt könnten zum Beispiel sein:

  1. Ausführung von PHPUnit-Tests für eigene TYPO3-Extensions. Hierzu kann die TYPO3-Erweiterung phpunit genutzt werden.
  2. Erhebung von Code-Metriken durch statische Analyse von PHP-, HTML-, JavaScript- und CSS-Dateien. So kann der Code auf die Einhaltung von Programmier-Standards und auf häufige Programmierfehler überprüft werden. Dafür dienen Werkzeuge wie PHP_Codesniffer, JSHint oder CSSLint. Selbst für TypoScript gibt es ein Werkzeug, mit dem Quelltext auf die Einhaltung von Standards überprüft werden kann (http://t3n.me/typoscript-lint).
  3. Kompilierung von Zwischensprachen wie SASS oder LESS zu CSS; oder CoffeeScript oder TypeScript zu JavaScript.

Um diese einzelnen Schritte zu orchestrieren, werden außerdem häufig Build-Werkzeuge wie beispielsweise Ant,  Phing oder Grunt eingesetzt. Für den Anfang genügen einfache Shell-Skripte.

 

Ein Multikonfigurations-Build mit Jenkins. Im Beispiel kann ein TYPO3-Projekt mit beliebigen Kombinationen aus TYPO3- und PHP-Versionen getestet werden. (Screenshot: Jenkins CI)

Ein Multikonfigurations-Build mit Jenkins. Im Beispiel kann ein TYPO3-Projekt mit beliebigen Kombinationen aus TYPO3- und PHP-Versionen getestet werden. (Screenshot: Jenkins CI)

Das Beispiel-Projekt enthält ein einfaches TYPO3-Projekt sowie eine Phing-Datei, die eine ganze Reihe von Build-Schritten steuert. Diese generieren einen Satz Log-Dateien, die später wiederum von einem CI-Werkzeug ausgewertet werden können. So führen beispielsweise fehlschlagende Unit-Tests oder eine Verschlechterung von Code-Metriken automatisch dazu, dass Berichte für die verantwortlichen Entwickler generiert werden. Um den Build-Prozess reproduzierbar zu machen, enthält das Projekt auch einen MySQL-Dump, der vor jedem Build neu eingespielt werden kann.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!