Archiv für Mai 2012

Automatische Installation von Joomla-Erweiterungen

Montag, 14. Mai 2012

Mit der Zeit haben sich einige Joomla-Erweiterungen angesammelt, die ich entwickelt habe und nun auch entsprechend gepflegt werden müssen.

Da meine Zeit begrenzt ist, müssen einige Schritte automatisiert werden.

Zum Bauen der Erweiterungen hatte ich schon in der Vergangenheit ein Shell-Skript geschrieben, welches folgende Funktionalität bietet:

  • In der XML-Datei wird <version> mit dem gewünschten Wert und <creattionDate> mit dem aktuellen Datum belegt.
  • Der php-Code wird auf syntaktische Richtigkeit geprüft.
  • Die Zip-Datei selbts wird erstellt. Welche Dateien hineinkommen sollen, ist in einer Datei hinterlegt.

Das Bauen selbst erfolgt mit Hilfe von Jenkins.

Nach einem erfolgreichem Bauen soll die erstellt Erweiterungen auch gleich in einem Test-Joomla installiert werden. So sollen Fehler beim Paketieren frühzeitig auffallen. Und in der Zukunft könnten auch gleich noch automatische Test anlaufen.

Bei der Suche im Web habe ich erst einmal nichts gefunden, was eine automatische Installation von Erweiterungen in Joomla ermöglicht.

Einen Lichtblick gab es dann doch noch. Es handelt sich dabei um eine Ant-Erweiterung, die eine automatische Installation von Erweiterungen für ältere Joomla-Versionen ermöglicht.

Leider lief das ganze nicht mir Joomla 1.7/2.5. So begann ich, das ganze entsprechend anzupassen.

Nun kann man mit einem Aufruf von

ant -lib ~/ant-joomla/lib deploy

liefert nun folgenden Outut

Buildfile: /home/harry/project/joomla-1.7/plugin_mosimage-admin/build.xml

deploy:
[joomla-install-extension] ==> Login
[joomla-install-extension] ==> Update token
[joomla-install-extension] ==> Update token: successful
[joomla-install-extension] ==> Login: successful
[joomla-install-extension] ==> Prepare Installion Component
[joomla-install-extension] ==> Prepare Installion Component was successful
[joomla-install-extension] ==> Update token
[joomla-install-extension] ==> Update token: successful
[joomla-install-extension] ==> Installion
[joomla-install-extension] ==> Installion was successful

BUILD SUCCESSFUL
Total time: 5 seconds

Die Erweiterung ist nun installiert. Den Erfolg kann man im Extention-Manager von Joomla überprüfen:

Das Ergebnis nach einer automatischen Installation

Das Ergebnis nach einer automatischen Installation

Was braucht man alles?

  • java 6 oder höher
  • ant (getestet mit 1.8.2)
  • ant-Erweiterung ant-joomla
  • ein installiertes Joomla 1.7/2.5

Einspielen der Ant-Erweiterung ant-joomla

Ich habe die Ant-Erweiterung unter $HOME/ant-joomla installiert. Natürlich kann man jeder anderen Ort wählen. Dann man natürlich auch im folgenden den Pfad entsprechend angeben.

1. Die Ant-Erweiterung nach $HOME/ant-joomla/lib auspacken

2. Nun legt man eine Build-File build.xml an:

<project>
    <taskdef name="joomla-install-extension" classname="com.joomboss.InstallExtensionTask" />
    <taskdef name="joomla-remove-extension" classname="com.joomboss.RemoveExtensionTask" />
 
    <property file="build.properties"/>
 
    <property name="url" value="URL_JOMMLA_TEST"/>
    <property name="login" value="ADMIN_USER"/>
    <property name="password" value="ADMIN_PASSWORD"/>
    <property name="ftplogin" value=""/>
    <property name="ftppassword" value=""/>
    <property name="debug" value="false"/>
    <property name="source" value="NAME_OF_EXTENTION_FILE"/>
    <property name="name" value="EN_NAME_OF_EXTENTION"/>
    <property name="type" value=""/>
 
    <target name="deploy">
        <joomla-install-extension
            source="${source}"
            url="${url}"
            adminlogin="${login}"
            adminpassword="${password}"
            ftplogin="${ftplogin}"
            ftppassword="${ftppassword}"
            debug="${debug}"/>
    </target>
 
    <target name="undeploy">
        <joomla-remove-extension
            name="${name}"
            type="${type}"
            url="${url}"
            adminLogin="${login}"
            adminPassword="${password}"
            ftpLogin="${ftplogin}"
            ftpPassword="${ftppassword}"
            debug="${debug}"/>
    </target>
 
</project>

Dabei müssen natürlich die Platzhalter

  • URL_JOMMLA_TEST
  • ADMIN_USER
  • ADMIN_PASSWORD
  • NAME_OF_EXTENTION_FILE
  • EN_NAME_OF_EXTENTION

ersetzt werden.

Die Änderungen muss man aber nicht direkt in build.xml durchführen. Stattdessen kann man die gewünschten Werte auch in der Datei build.properties ablegen. Die Werte in build.properties überschreiben die Werte in build.xml

Beispiel:

url=http://localhost/joomla-test
login=admin
password=mainPassword
source=deploy/h2n_linkdirectory2-u-${VERSION}.zip
name=Link Directotry 2.0

Download: ant-joomla-full-1-0-0