- Add Pa11y CI config template (templates/configs/pa11yci.json) - Replace all github.com/mokoconsulting-tech with git.mokoconsulting.tech/MokoConsulting - Update .moko-standards governance file Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
15 KiB
Release Process — MokoCassiopeia
This document describes the complete release process for MokoCassiopeia Joomla template, including automated workflows and manual procedures.
Table of Contents
- Overview
- Release Types
- Automated Release Process
- Manual Release Process
- Update Server Configuration
- Testing Releases
- Rollback Procedures
- Troubleshooting
Overview
MokoCassiopeia uses an automated release system powered by GitHub Actions. The system:
- Builds installation packages automatically
- Generates checksums for security verification
- Creates GitHub Releases with downloadable artifacts
- Updates the Joomla update server (
updates.xml) automatically - Validates package integrity with SHA-256 hashes
Key Components
- Release Workflow (
.github/workflows/release.yml): Builds and publishes releases - Auto-Update SHA (
.github/workflows/auto-update-sha.yml): Updatesupdates.xmlafter release - Build Script (
scripts/build-release.sh): Local development builds - Update Server (
updates.xml): Joomla update server manifest
Release Types
Patch Release (Third Digit)
Format: XX.XX.XX → XX.XX.XX+1 (e.g., 03.08.03 → 03.08.04)
When to use:
- Bug fixes
- Security patches
- Documentation updates
- Minor CSS/styling tweaks
- No breaking changes
Example: 03.08.03 → 03.08.04
Minor Release (Second Digit)
Format: XX.XX.00 → XX.XX+1.00 (e.g., 03.08.03 → 03.09.00)
When to use:
- New features
- New module/component overrides
- Significant styling changes
- Backward-compatible changes
Example: 03.08.03 → 03.09.00
Major Release (First Digit)
Format: XX.00.00 → XX+1.00.00 (e.g., 03.08.03 → 04.00.00)
When to use:
- Breaking changes
- Major architecture changes
- Joomla version upgrades
- Complete redesigns
Example: 03.08.03 → 04.00.00
Automated Release Process
Recommended for most releases
Prerequisites
- All changes merged to
mainbranch - Tests passing
- Documentation updated
- CHANGELOG.md updated
- Local testing completed
Step 1: Prepare Release Branch
# Create release branch
git checkout main
git pull
git checkout -b release/03.08.04
# Update version in templateDetails.xml
# Edit: src/templateDetails.xml
# Change: <version>03.08.03</version>
# To: <version>03.08.04</version>
# Update CHANGELOG.md
# Add new section:
## [03.08.04] - 2026-02-27
### Added
- Feature descriptions
### Fixed
- Bug fix descriptions
### Changed
- Change descriptions
# Commit changes
git add src/templateDetails.xml CHANGELOG.md
git commit -m "chore: Prepare release 03.08.04"
git push origin release/03.08.04
Step 2: Create Pull Request
- Go to GitHub repository
- Click "Pull requests" → "New pull request"
- Base:
main, Compare:release/03.08.04 - Title:
Release 03.08.04 - Description: Copy relevant CHANGELOG entries
- Create pull request
- Review and merge
Step 3: Create and Push Tag
# Switch to main and pull changes
git checkout main
git pull
# Create tag
git tag 03.08.04
# Push tag (triggers release workflow)
git push origin 03.08.04
Step 4: Monitor Automated Process
-
Go to GitHub Actions tab
-
Watch "Create Release" workflow:
- Builds package
- Generates checksums
- Creates GitHub Release
- Uploads artifacts
-
Watch "Auto-Update SHA Hash" workflow:
- Downloads release package
- Calculates SHA-256 hash
- Updates
updates.xml - Commits to main branch
Step 5: Verify Release
-
Check GitHub Release:
- Go to Releases tab
- Verify release
03.08.04exists - Download ZIP package
- Verify checksums match
-
Check updates.xml:
git pull cat updates.xml- Verify version is
03.08.04 - Verify download URL is correct
- Verify SHA-256 hash is present
- Verify version is
-
Test Joomla Update:
- Install previous version in Joomla
- Go to Extensions → Update
- Verify update is detected
- Perform update
- Verify template works correctly
Manual Release Process
Use when automation fails or for local testing
Step 1: Prepare Repository
# Update version numbers
# Edit: src/templateDetails.xml
# Edit: CHANGELOG.md
# Commit changes
git add src/templateDetails.xml CHANGELOG.md
git commit -m "chore: Prepare release 03.08.04"
git push
Step 2: Build Package Locally
# Run build script
./scripts/build-release.sh 03.08.04
# Output will be in build/ directory:
# - mokocassiopeia-src-03.08.04.zip
# - mokocassiopeia-src-03.08.04.zip.sha256
# - mokocassiopeia-src-03.08.04.zip.md5
Step 3: Test Package
# Install in Joomla test environment
# Extensions → Manage → Install → Upload Package File
# Select: build/mokocassiopeia-src-03.08.04.zip
# Test all features:
# - Template displays correctly
# - Module overrides work
# - Alternative layouts selectable
# - Dark mode works
# - No JavaScript errors
Step 4: Create GitHub Release
- Go to GitHub Releases
- Click "Create a new release"
- Tag:
03.08.04(create new tag) - Release title:
Release 03.08.04 - Description: Copy from CHANGELOG.md
- Upload files:
mokocassiopeia-src-03.08.04.zipmokocassiopeia-src-03.08.04.zip.sha256mokocassiopeia-src-03.08.04.zip.md5
- Publish release
Step 5: Update updates.xml Manually
# Extract SHA-256 hash
cat build/mokocassiopeia-src-03.08.04.zip.sha256
# Example output: a1b2c3d4e5f6...
# Edit updates.xml
# Update <version>03.08.04</version>
# Update <creationDate>2026-02-27</creationDate>
# Update <downloadurl>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/03.08.04/mokocassiopeia-src-03.08.04.zip</downloadurl>
# Update <sha256>sha256:a1b2c3d4e5f6...</sha256>
# Commit and push
git add updates.xml
git commit -m "chore: Update updates.xml for release 03.08.04"
git push
Update Server Configuration
updates.xml Structure
<updates>
<update>
<name>MokoCassiopeia</name>
<description>Moko Consulting's site template based on Cassiopeia.</description>
<element>mokocassiopeia</element>
<type>template</type>
<client>site</client>
<version>03.08.04</version>
<creationDate>2026-02-27</creationDate>
<author>Jonathan Miller || Moko Consulting</author>
<authorEmail>hello@mokoconsulting.tech</authorEmail>
<copyright>(C)GNU General Public License Version 3 - 2026 Moko Consulting</copyright>
<infourl title='MokoCassiopeia'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia</infourl>
<downloads>
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/03.08.04/mokocassiopeia-src-03.08.04.zip</downloadurl>
<sha256>sha256:a1b2c3d4e5f6...</sha256>
</downloads>
<tags>
<tag>stable</tag>
</tags>
<maintainer>Moko Consulting</maintainer>
<maintainerurl>https://www.mokoconsulting.tech</maintainerurl>
<targetplatform name='joomla' version='5.*'/>
</update>
</updates>
Hosting Update Server
The updates.xml file is hosted directly on GitHub:
URL: https://raw.githubusercontent.com/mokoconsulting-tech/MokoCassiopeia/main/updates.xml
This URL is configured in src/templateDetails.xml:
<updateservers>
<server type="extension" name="MokoCassiopeia Updates" priority="1">
https://raw.githubusercontent.com/mokoconsulting-tech/MokoCassiopeia/main/updates.xml
</server>
</updateservers>
Testing Releases
Pre-Release Testing
# 1. Build package locally
./scripts/build-release.sh
# 2. Set up Joomla test environment
# - Clean Joomla 5.x installation
# - Previous MokoCassiopeia version installed
# 3. Test current version features
# - All module overrides
# - Alternative layouts
# - Dark mode toggle
# - Responsive behavior
# 4. Install new package
# Extensions → Manage → Install → Upload Package
# 5. Verify upgrade process
# - No errors during installation
# - Settings preserved
# - Custom modifications retained
# 6. Test new features
# - New functionality works
# - Bug fixes applied
# - No regressions
Update Server Testing
# 1. Install previous version in Joomla
# 2. Go to: Extensions → Update
# 3. Click "Find Updates"
# 4. Verify update shows: "MokoCassiopeia 03.08.04"
# 5. Click "Update"
# 6. Verify successful update
# 7. Test template functionality
Checklist
- Package installs without errors
- Template activates correctly
- All module overrides work
- Alternative layouts selectable
- Dark mode functions
- Responsive on mobile/tablet/desktop
- No JavaScript console errors
- No PHP errors in Joomla logs
- Update server detects new version
- Update process completes successfully
Rollback Procedures
Rollback Release
If a release has critical issues:
-
Delete GitHub Release:
- Go to Releases
- Click release to delete
- Click "Delete"
- Confirm deletion
-
Delete Git Tag:
# Delete local tag git tag -d 03.08.04 # Delete remote tag git push --delete origin 03.08.04 -
Revert updates.xml:
# Revert to previous version git revert <commit-hash-of-auto-update> git push -
Notify Users:
- Create GitHub issue explaining the problem
- Pin the issue
- Provide rollback instructions for users
User Rollback Instructions
For users who installed the problematic version:
- Download previous version from GitHub Releases
- Uninstall current version:
- Extensions → Manage → Manage
- Find MokoCassiopeia
- Click "Uninstall"
- Install previous version:
- Extensions → Manage → Install
- Upload previous version ZIP
- Verify functionality
Troubleshooting
Release Workflow Fails
Problem: Build fails with "rsync: command not found"
Solution: The GitHub Actions runner always has rsync installed. If this occurs, check the workflow file syntax.
Problem: ZIP creation fails
Solution: Check that src/ and src/media/ directories exist and contain files.
Problem: Version update fails
Solution: Verify sed commands in workflow match actual XML structure.
Auto-Update SHA Fails
Problem: Cannot download release package
Solution:
- Verify release was published (not draft)
- Check package naming:
mokocassiopeia-src-{version}.zip - Verify release tag format
Problem: SHA-256 hash mismatch
Solution:
- Package may have been modified after calculation
- Re-run the workflow manually
- Verify package integrity
Problem: Commit fails
Solution:
- Check workflow has write permissions
- Verify no branch protection rules blocking bot commits
Manual Build Issues
Problem: ./scripts/build-release.sh: Permission denied
Solution:
chmod +x scripts/build-release.sh
./scripts/build-release.sh
Problem: Build directory exists
Solution:
rm -rf build/
./scripts/build-release.sh
Update Server Issues
Problem: Joomla doesn't detect update
Solution:
- Check
updates.xmlis accessible:curl https://raw.githubusercontent.com/mokoconsulting-tech/MokoCassiopeia/main/updates.xml - Verify version number is higher than installed version
- Clear Joomla cache: System → Clear Cache
- Check update URL in templateDetails.xml
Problem: Update fails with "Invalid package"
Solution:
- Verify SHA-256 hash matches
- Re-download package and check integrity
- Verify package structure is correct
Best Practices
Version Numbering
- Always increment version numbers sequentially
- Never reuse version numbers
- Use consistent format:
XX.XX.XX
Changelog
- Update before release
- Include all changes since last version
- Categorize changes: Added, Changed, Fixed, Removed
- Write clear descriptions for users
Testing
- Test locally before pushing tag
- Test update process from previous version
- Test on clean Joomla installation
- Test different configurations
Communication
- Announce releases on GitHub Discussions
- Document breaking changes clearly
- Provide migration guides for major changes
- Respond promptly to issue reports
Quick Reference
Automated Release Commands
# 1. Create release branch
git checkout -b release/03.08.04
# 2. Update version and CHANGELOG
# (edit files)
# 3. Commit and push
git add .
git commit -m "chore: Prepare release 03.08.04"
git push origin release/03.08.04
# 4. Create and merge PR (via GitHub UI)
# 5. Create and push tag
git checkout main
git pull
git tag 03.08.04
git push origin 03.08.04
# 6. Wait for automation to complete
Manual Release Commands
# Build locally
./scripts/build-release.sh 03.08.04
# Test installation
# (manual Joomla testing)
# Create release on GitHub
# (via GitHub UI)
# Update updates.xml
# (edit file with SHA-256)
git add updates.xml
git commit -m "chore: Update updates.xml for 03.08.04"
git push
Related Documentation
- Build Scripts: scripts/README.md
- Workflow Guide: WORKFLOW_GUIDE.md
- Contributing: CONTRIBUTING.md
- Changelog: CHANGELOG.md
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: hello@mokoconsulting.tech
License
Copyright (C) 2026 Moko Consulting
This documentation is licensed under GPL-3.0-or-later.