4
update-server.-
Jonathan Miller edited this page 2026-05-16 18:31:24 +00:00

← Back to Home

Home

Joomla Update Server

This document explains how update.xml is automatically managed for this Joomla extension following the Joomla Update Server specification.

How It Works

Joomla checks for extension updates by fetching an XML file from the URL defined in the <updateservers> tag in the extension's XML manifest. moko-platform generates this file automatically.

Automatic Generation

Event Workflow <tag> <version>
Merge to main auto-release.yml stable XX.YY.ZZ
Push to alpha/** update-server.yml alpha XX.YY.ZZ-alpha
Push to rc/** update-server.yml rc XX.YY.ZZ-rc

Cascade Release Channels

Each stability level writes itself and all lower channels to updates.xml:

Release Stream Channels written
development development
alpha development, alpha
beta development, alpha, beta
rc development, alpha, beta, rc
stable development, alpha, beta, rc, stable

This ensures Joomla sites on any "Minimum Stability" setting always see the latest available release.

Sync to Main

Generated XML Structure

<?xml version="1.0" encoding="utf-8"?>
<updates>
    <update>
        <name>Extension Name</name>
        <description>Extension Name update</description>
        <element>com_extensionname</element>
        <type>component</type>
        <version>01.02.03</version>
        <client>site</client>
        <tags>
            <tag>stable</tag>
        </tags>
        <infourl title="Extension Name">https://github.com/.../releases/tag/v01.02.03</infourl>
        <downloads>
            <downloadurl type="full" format="zip">https://github.com/.../releases/download/v01.02.03/com_ext-01.02.03.zip</downloadurl>
        </downloads>
        <targetplatform name="joomla" version="((5\.[0-9])|(6\.[0-9]))" />
        <maintainer>Moko Consulting</maintainer>
        <maintainerurl>https://mokoconsulting.tech</maintainerurl>
    </update>
</updates>

Metadata Source

All metadata is extracted from the extension's XML manifest (src/*.xml) at build time:

XML Element Source Notes
<name> <name> in manifest Extension display name
<element> <element> in manifest Must match installed extension identifier
<type> type attribute on <extension> component, module, plugin, library, package, template
<client> client attribute on <extension> site or administratorrequired for plugins and modules
<folder> group attribute on <extension> Plugin group (e.g., system, content) — required for plugins
<targetplatform> <targetplatform> in manifest Falls back to Joomla 5.x / 6.x if not specified
<php_minimum> <php_minimum> in manifest Included only if present

Extension Manifest Setup

Your XML manifest must include an <updateservers> tag pointing to the update.xml on the main branch:

<extension type="component" client="site" method="upgrade">
    <name>My Extension</name>
    <element>com_myextension</element>
    <updateservers>
        <server type="extension" name="My Extension Updates">
            https://raw.githubusercontent.com/mokoconsulting-tech/MokoWaaS/main/update.xml
        </server>
    </updateservers>
</extension>

Branch Lifecycle

dev → [alpha] → [beta] → rc → version/XX → main → dev
       optional   optional     (integration)  (production)  (feedback)
  1. Development (dev or dev/**): updates.xml with <tag>development</tag>, download points to Gitea release ZIP
  2. Alpha (alpha/**): updates.xml with <tag>alpha</tag>, cascades to development channel
  3. Beta (beta/**): updates.xml with <tag>beta</tag>, cascades to alpha + development channels
  4. Release Candidate (rc/**): updates.xml with <tag>rc</tag>, cascades to beta + alpha + development channels
  5. Stable Release (merge to main): updates.xml with <tag>stable</tag>, cascades to all channels, download points to GitHub Release asset
  6. Frozen Snapshot (version/XX): immutable, never force-pushed

Health Checks

The repo_health.yml workflow verifies on every commit:

  • update.xml exists in the repository root
  • XML manifest exists with <extension> tag
  • <version>, <name>, <author>, <namespace> tags present
  • Extension type attribute is valid
  • Language .ini files exist
  • index.html directory listing protection in src/, src/admin/, src/site/


Repo: MokoWaaS · MokoStandards

Revision Date Author Description
1.0 2026-05-09 Moko Consulting Initial version

Repo: MokoWaaS · MokoStandards

Field Value
Minimum Version 04.07.00
Platform joomla
Revision Date Author Description
1.0 2026-05-16 Moko Consulting Standards compliance update