Extension update per Github

  • Hallo liebe Mitglieder,

    falls es schon mal so ein Problem gab, bitte ich um Weiterleitung zu diesem, meine suche ergab nichts dergleichen.


    Mein Problem: Ich habe eine Extension gebaut die auch fkt. und wollte diese hier auf joomla veröffentlichen. Der Support hat mir dann gesagt ich sollte eine Updatefunktion (https://docs.joomla.org/J3.x:D…t/Adding_an_update_server) einfügen. Und hier komme ich nicht weiter.


    In meiner paywithiota.xml habe ich folgendes eingefügt:


    <updateservers>

    <server type="extension" name="Extension Updates" priority="2">https://raw.githubusercontent.…omla/main/paywithiota.xml</server>

    </updateservers>


    Der Support sagte dazu, Link zu GitHub ist oK "But you need to create a different kind of xml file;" Soll ich nun eine "update.xml" erstellen, wie oben im Link erstellen Inhalt? Wenn ich dann später ein Update erstelle müsste ich die update.xml aktualisieren? Ich hab bis jetzt nur für wordpress was geschrieben und die Aktualisierung dort ist (zumindest für mich) wesentlich einfacher nachzuvollziehen. Hier sehe ich momentan nicht durch und die Hilfestellung verstehe ich nicht so richtig.


    Ich danke schon mal im Voraus :)

  • Irgendwo habe ich das zwar mal beschrieben, aber wo nur.


    Wie ich es mache:

    - Ich habe ein Repository für (auch) Update-XMLs. Das ist so nicht unbedingt nötig, aber passt halt in meine Arbeitsweise.

    https://github.com/GHSVS-de/upadateservers

    - In meiner Erweiterungs-Manifest-Datei (also das, was du oben verlinkt hast) steht dann z.B.

    Code
    <updateservers><server type="extension" priority="1" name="PLG_SYSTEM_OFFLINEGHSVS">https://raw.githubusercontent.com/GHSVS-de/upadateservers/master/plg_system_offlineghsvs-update.xml</server></updateservers>

    - Also der Pfad zu Update-Datei in meinem Extra-Repository.

    https://raw.githubusercontent.…m_offlineghsvs-update.xml

    Auch die Dateinamen der Update-XML sind letztlich egal. Ich mag's halt so.

    - Natürlich kannst du die Update Datei auch direkt in deinem Repository ablegen. Hauptsache der angegebene Pfad stimmt. Das hier ist so ein frühes Testbeispiel von mir:

    https://github.com/GHSVS-de/plg_system_changelogtest


    EDIT: Und die Update-XMLs weichen von Erweiterungstyp zu Erweiterungstyp etwas ab. Und ja, man aktualisiert die bei jedem Update. Ich empfehle, sie zu ergänzen, muss man aber nicht. Irgendwann kann man sie mal ausdünnen und die ganz alten raushauen.

    https://docs.joomla.org/Deploying_an_Update_Server (wobei ich damals (wie heute) Probleme mit diesen Docs habe ;) ).

  • Vielen Dank für die Antwort.


    Also muss ich in meiner "main.xml" den GitHub Link zur neu erstellten "bsp-update.xml" einrichten. (ich mach das lieber Extern, wenn der Support das so wollte oder lieber sieht)


    Ok, deine Bsp hab ich angeguckt, aber mir erscheint das (noch) sehr umständlich. Mir erschließt sich der Sinn nicht das man eine extra Update Datei braucht...in dieser XML Datei schreibe ich nur rein, das sich ETWAS geändert hat und nicht WAS sich geändert hat?! Joomla kontrolliert also die Update.xml und wenn sie sieht das sich etwas geändert hat, kontrolliert es die anderen Dateien?


    Was genau ändert sich in deiner Datei? https://raw.githubusercontent.…m_offlineghsvs-update.xml außer Targetplattform von 3 auf 4.


    Ich würde diese Datei nur für die Versionsnummer ändern/ Pfad zur Datei?!


    Tut mir leid wenn ich das hier nicht auf anhieb verstehe

  • Hab jetzt erst Post gesehen, sonst hätte ich wohl das hier geschickt (wenn es das ist was es ist) :)



    Liebe Grüße

    Christine

  • Danke christine2 der Beitrag auch geholfen.


    Hab jetzt alles umgestellt, ein neuen "test" release veröffentlicht, diesen in der update.xml eingefügt, aber joomla macht kein automatischen update...

    Die Update-Quelle in Joomla selber ist auch die richtige, also die verlinkung zu GitHub und der Update-Datei


    main.xml mit dem Server Code:


    XML
        <updateservers>
        <server type="extension" name="Pay with IOTA" priority="1">https://raw.githubusercontent.com/shortaktien/pay-with-iota-joomla/main/updates.xml</server>
        </updateservers>


    Die Updates.xml:

  • Deine Update-XML ist nicht vollständig. Es fehlt mindestens der <folder>. Bei <client> bin ich unsicher. Ist bei Plugins aber, wenn, dann eh immer "site".


    Dann hast du 2 öffnende

    Code
    <updates>

    Darf natürlich nicht sein. Damit ist das kein valides XML.


    Hab jetzt nicht alles oben gelesen: Deshalb nur, was mir zum Thema noch einfällt:


    Die Update-Datei informiert über neue Versionen.Damit bietet das Joomla-Backend diese automatisch an. Wenn keine neue Version drinnen steht, bietet Joomla natürlich keine neue an.


    Es muss allerdings mindestens eine vorliegen, in der die aktuelle Version und vor allem mit richtiger Target-Plattform eingetragen ist. Ansonsten spuckt Joomla 4 eben entsprechende Warnungen aus und sagt z.B., dass die Erweiterung nicht geeignet ist für Joomla 4.


    Dann muss man beachten, dass auf Github das Bereitstellen bis zu mehreren Minuten dauern kann, bevor dann wirklich auslesbar von Extern. Man kann die Datei natürlich auch auf seinem eigenen Server ablegen, wenn der XML-Dateien nicht blockiert beim Abrufen (gibt ja so bescheuerte Konfigurationen).


    Dann hat Joomla auch einen Update-Cache. Man muss also beim Testen "Updates suchen" klicken, damit der Cache umgangen wird.


    ---------------------------------

    Dann gibt es noch die Changelog-Datei bzw. infourl, die aber nicht verpflichtend sind. (EDIT: Glaube ich.)

    --------------------------------


    Kompliziert ist die Updatedatei beim erstmaligen Anlöegen vielleicht. Danach kannst du ja einfach die Versions-Nummer austauschen, wenn du eine neue Version bereit stellst. Letztlich habe ich im Laufe der Zeit gelernt, dass sich zu viel Bequemlichkeit nicht immer lohnt ;)

  • Danke!

    Ich habe das eh immer drinnen. Nach dem Motto, was nicht stört, ist nicht falsch oder sogar Pflicht. Liegt aber daran, dass ich das mittlerweile alles automatisiert in die diversen XMLs einsetzen lasse. Muss ich mir keine Gedanken mehr drüber machen ... so lange es keine Schlauberger gibt, die meinen da was "verbessern" zu müssen ;)


    Dann muss man beachten, dass auf Github das Bereitstellen bis zu mehreren Minuten dauern kann, bevor dann wirklich auslesbar von Extern

    Das habe ich gerade mal mitgestoppt. Da waren es 6 Minuten bis die XML-Dateien von raw.githubusercontent.com alle auf Extern aktualisiert auslesbar waren. GitHub cached die wohl oder virenscant oder wasimmer.... Kann natürlich lästig sein.

  • Re:Later kommt davon wenn man hin und her kopiert.


    Lag wirklich an <client> und <folder>. Die Anleitung vom Support hat das leider nicht angegeben, sollte man ändern. Die Funktionalität der update.xml hab ich nun auch verstanden. So schlimm ist es wirklich nicht.


    Danke auch an Sieger66


    Alles fkt und die updates laufen automatische ab :thumbup:

  • Lag wirklich an <client> und <folder>. Die Anleitung vom Support hat das leider nicht angegeben, sollte man ändern.

    Ist aber eigentlich durchaus dort erklärt:

    https://docs.joomla.org/Deploying_an_Update_Server/de

    Zitat

    ...

    folder – Speziell für Plugins beschreibt dieses Tag den Typ des zu aktualisierenden Plugins (content, system, usw.) (für Plugins erforderlich)


    client – Die Client-ID der Erweiterung. Für Module und Templates ab 3.2.0 erforderlich. Mögliche Werte sind derzeit "site" oder "administrator". Warnung! Plugins und Front-End-Module werden automatisch mit dem Client "site" installiert, aber man muss den Client in einer Aktualisierung angeben, sonst wird er standardmäßig auf "administrator" gesetzt und die gefundene Aktualisierung wird nicht angezeigt, weil sie keiner Erweiterung entspricht. ...



    und dies ist über deinen Link im post #1 in folgender Zeile per Link auch ebenso erreichbar:

    Zitat

    You can find definitions of the elements of this XML structure at Deploying an Update Server,...

    Die deutsche Version dann per klick auf "Deutsch"