{"id":1018,"date":"2012-05-14T13:23:40","date_gmt":"2012-05-14T11:23:40","guid":{"rendered":"http:\/\/www.joomla-hklein.de\/?p=1018"},"modified":"2021-03-29T23:47:33","modified_gmt":"2021-03-29T21:47:33","slug":"automatische-installation-von-joomla-erweiterungen","status":"publish","type":"post","link":"http:\/\/www.joomla-hklein.de\/?p=1018","title":{"rendered":"Automatische Installation von Joomla-Erweiterungen"},"content":{"rendered":"<p>Mit der Zeit haben sich einige Joomla-Erweiterungen angesammelt, die ich entwickelt habe und nun auch entsprechend gepflegt werden m\u00c3\u00bcssen.<\/p>\n<p>Da meine Zeit begrenzt ist, m\u00c3\u00bcssen einige Schritte automatisiert werden.<\/p>\n<p>Zum Bauen der Erweiterungen hatte ich schon in der Vergangenheit ein Shell-Skript geschrieben, welches folgende Funktionalit\u00c3\u00a4t bietet:<\/p>\n<ul>\n<li>In der XML-Datei wird &lt;version&gt; mit dem gew\u00c3\u00bcnschten Wert und &lt;creattionDate&gt; mit dem aktuellen Datum belegt.<\/li>\n<li>Der php-Code wird auf syntaktische Richtigkeit gepr\u00c3\u00bcft.<\/li>\n<li>Die Zip-Datei selbts wird erstellt. Welche Dateien hineinkommen sollen, ist in einer Datei hinterlegt.<\/li>\n<\/ul>\n<p>Das Bauen selbst erfolgt mit Hilfe von <a title=\"Jenkins\" href=\"http:\/\/jenkins-ci.org\/\" target=\"_blank\" rel=\"noopener\">Jenkins<\/a>.<\/p>\n<p>Nach einem erfolgreichem Bauen soll die erstellt Erweiterungen auch gleich in einem Test-Joomla installiert werden. So sollen Fehler beim Paketieren fr\u00c3\u00bchzeitig auffallen. Und in der Zukunft k\u00c3\u00b6nnten auch gleich noch automatische Test anlaufen.<\/p>\n<p>Bei der Suche im Web habe ich erst einmal nichts gefunden, was eine automatische Installation von Erweiterungen in Joomla erm\u00c3\u00b6glicht.<\/p>\n<p>Einen <a href=\"http:\/\/joomboss.com\/products\/ant-joomla\/documentation\" target=\"_blank\" rel=\"noopener\">Lichtblick<\/a> gab es dann doch noch. Es handelt sich dabei um eine <a href=\"ant.apache.org\" target=\"_blank\" rel=\"noopener\">Ant<\/a>-Erweiterung, die eine automatische Installation von Erweiterungen f\u00c3\u00bcr \u00c3\u00a4ltere Joomla-Versionen erm\u00c3\u00b6glicht.<\/p>\n<p>Leider lief das ganze nicht mir Joomla 1.7\/2.5. So begann ich, das ganze entsprechend anzupassen.<\/p>\n<p>Nun kann man mit einem Aufruf von<\/p>\n<pre>ant -lib ~\/ant-joomla\/lib deploy<\/pre>\n<p>liefert nun folgenden Outut<\/p>\n<pre>Buildfile: \/home\/harry\/project\/joomla-1.7\/plugin_mosimage-admin\/build.xml\r\n\r\ndeploy:\r\n[joomla-install-extension] ==&gt; Login\r\n[joomla-install-extension] ==&gt; Update token\r\n[joomla-install-extension] ==&gt; Update token: successful\r\n[joomla-install-extension] ==&gt; Login: successful\r\n[joomla-install-extension] ==&gt; Prepare Installion Component\r\n[joomla-install-extension] ==&gt; Prepare Installion Component was successful\r\n[joomla-install-extension] ==&gt; Update token\r\n[joomla-install-extension] ==&gt; Update token: successful\r\n[joomla-install-extension] ==&gt; Installion\r\n[joomla-install-extension] ==&gt; Installion was successful\r\n\r\nBUILD SUCCESSFUL\r\nTotal time: 5 seconds<\/pre>\n<p>Die Erweiterung ist nun installiert. Den Erfolg kann man im Extention-Manager von Joomla \u00c3\u00bcberpr\u00c3\u00bcfen:<\/p>\n<div id=\"attachment_1034\" style=\"width: 634px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.joomla-hklein.de\/wp-content\/uploads\/2012\/05\/Auto-Installation.png\" rel=\"lightbox[1018]\"><img aria-describedby=\"caption-attachment-1034\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-1034\" src=\"http:\/\/www.joomla-hklein.de\/wp-content\/uploads\/2012\/05\/Auto-Installation.png\" alt=\"Das Ergebnis nach einer automatischen Installation\" width=\"624\" height=\"41\" \/><\/a><p id=\"caption-attachment-1034\" class=\"wp-caption-text\">Das Ergebnis nach einer automatischen Installation<\/p><\/div>\n<h2>Was braucht man alles?<\/h2>\n<ul>\n<li>java 6 oder h\u00c3\u00b6her<\/li>\n<li>ant (getestet mit 1.8.2)<\/li>\n<li>ant-Erweiterung ant-joomla<\/li>\n<li>ein installiertes Joomla 1.7\/2.5<\/li>\n<\/ul>\n<h2>Einspielen der Ant-Erweiterung ant-joomla<\/h2>\n<p>Ich habe die Ant-Erweiterung unter $HOME\/ant-joomla installiert. Nat\u00c3\u00bcrlich kann man jeder anderen Ort w\u00c3\u00a4hlen. Dann man nat\u00c3\u00bcrlich auch im folgenden den Pfad entsprechend angeben.<\/p>\n<p>1. Die Ant-Erweiterung nach $HOME\/ant-joomla\/lib auspacken<\/p>\n<p>2. Nun legt man eine Build-File build.xml an:<\/p>\n<pre lang=\"xml\" escaped=\"true\">&lt;project&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;taskdef name=\"joomla-install-extension\" classname=\"com.joomboss.InstallExtensionTask\" \/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;taskdef name=\"joomla-remove-extension\" classname=\"com.joomboss.RemoveExtensionTask\" \/&gt;\r\n\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property file=\"build.properties\"\/&gt;\r\n\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"url\" value=\"URL_JOMMLA_TEST\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"login\" value=\"ADMIN_USER\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"password\" value=\"ADMIN_PASSWORD\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"ftplogin\" value=\"\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"ftppassword\" value=\"\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"debug\" value=\"false\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"source\" value=\"NAME_OF_EXTENTION_FILE\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"name\" value=\"EN_NAME_OF_EXTENTION\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;property name=\"type\" value=\"\"\/&gt;\r\n\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;target name=\"deploy\"&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;joomla-install-extension\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0source=\"${source}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0url=\"${url}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0adminlogin=\"${login}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0adminpassword=\"${password}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0ftplogin=\"${ftplogin}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0ftppassword=\"${ftppassword}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0debug=\"${debug}\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;\/target&gt;\r\n\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;target name=\"undeploy\"&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;joomla-remove-extension\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0name=\"${name}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0type=\"${type}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0url=\"${url}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0adminLogin=\"${login}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0adminPassword=\"${password}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0ftpLogin=\"${ftplogin}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0ftpPassword=\"${ftppassword}\"\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0debug=\"${debug}\"\/&gt;\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0&lt;\/target&gt;\r\n\r\n&lt;\/project&gt;<\/pre>\n<p>Dabei m\u00c3\u00bcssen nat\u00c3\u00bcrlich die Platzhalter<\/p>\n<ul>\n<li>URL_JOMMLA_TEST<\/li>\n<li>ADMIN_USER<\/li>\n<li>ADMIN_PASSWORD<\/li>\n<li>NAME_OF_EXTENTION_FILE<\/li>\n<li>EN_NAME_OF_EXTENTION<\/li>\n<\/ul>\n<p>ersetzt werden.<\/p>\n<p>Die \u00c3\u201enderungen muss man aber nicht direkt in build.xml durchf\u00c3\u00bchren. Stattdessen kann man die gew\u00c3\u00bcnschten Werte auch in der Datei build.properties ablegen. Die Werte in build.properties \u00c3\u00bcberschreiben die Werte in build.xml<\/p>\n<p><strong>Beispiel:<\/strong><\/p>\n<pre>url=http:\/\/localhost\/joomla-test\r\nlogin=admin\r\npassword=mainPassword\r\nsource=deploy\/h2n_linkdirectory2-u-${VERSION}.zip\r\nname=Link Directotry 2.0<\/pre>\n<p><strong>Download:<\/strong> <a href='http:\/\/www.joomla-hklein.de\/wp-content\/uploads\/2012\/05\/ant-joomla-full-1-0-0.zip'>ant-joomla-full-1-0-0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit der Zeit haben sich einige Joomla-Erweiterungen angesammelt, die ich entwickelt habe und nun auch entsprechend gepflegt werden m\u00c3\u00bcssen. Da meine Zeit begrenzt ist, m\u00c3\u00bcssen einige Schritte automatisiert werden. Zum Bauen der Erweiterungen hatte ich schon in der Vergangenheit ein Shell-Skript geschrieben, welches folgende Funktionalit\u00c3\u00a4t bietet: In der XML-Datei wird &lt;version&gt; mit dem gew\u00c3\u00bcnschten Wert [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[12,3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=\/wp\/v2\/posts\/1018"}],"collection":[{"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1018"}],"version-history":[{"count":44,"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=\/wp\/v2\/posts\/1018\/revisions"}],"predecessor-version":[{"id":1115,"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=\/wp\/v2\/posts\/1018\/revisions\/1115"}],"wp:attachment":[{"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1018"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.joomla-hklein.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}