Open-source software for Joomla, Gitea, and web platforms. Home of MokoSuite, MokoGitea, and MokoCLI.
Tennessee
releases/joomla-release-process.-
Joomla Release Process
How to build, package, and publish Joomla extension releases.
Steps
1. Prepare the Release
- Ensure all work is merged to
main - Update version in all manifest XML files (package + sub-extensions)
- Finalize CHANGELOG.md — move
[Unreleased]entries to the new version section - Commit:
chore: prepare release v1.1.0
2. Build the Package
make build
This runs:
- PHP lint check on all source files
- PHP CodeSniffer (Joomla standard)
- PHPStan static analysis
- Packages all sub-extensions into a single ZIP
Output: dist/pkg_mokosuitebackup-01.01.00.zip
3. Create the Release
Tag the commit and create a Gitea release:
git tag v1.1.0
git push origin v1.1.0
If auto-release.yml CI workflow is configured, this automatically:
- Builds the package
- Creates a Gitea release with the tag
- Uploads the ZIP as a release asset
For manual releases:
- Go to the repo on Gitea → Releases → New Release
- Tag:
v1.1.0 - Title:
pkg_mokosuitebackup v01.01.00(matches Joomla naming) - Upload
dist/pkg_mokosuitebackup-01.01.00.zip - Paste CHANGELOG entries as release notes
4. Update Server
MokoGitea automatically generates the Joomla update server XML from release assets for repos with platform: joomla in their manifest. No manual updates.xml maintenance needed.
Installed Joomla sites check for updates via System > Update > Extensions and will see the new version.
Naming Conventions
| Artifact | Format |
|---|---|
| Package ZIP | pkg_{name}-{XX.YY.ZZ}.zip |
| Component ZIP | com_{name}-{XX.YY.ZZ}.zip (if released standalone) |
| Git tag | v{X.Y.Z} |
| Release title | pkg_{name} v{XX.YY.ZZ} |
Checklist
- Version bumped in all manifests
- CHANGELOG.md updated
make buildpasses cleanly- SQL update script exists for schema changes
- Language strings added for new UI text
- README updated if needed
- Tag created and pushed
- Release created with ZIP attached
- Update server serving new version (verify with
curl)
Pages