Table of Contents
Workflow Standards
Canonical reference for MokoGitea Actions CI/CD workflows across all Moko Consulting repositories.
Architecture
Template Repos (canonical source) → Production Repos (synced copies)
───────────────────────────────────────── ──────────────────────────────────────
mokocli-Template-Joomla → MokoOnyx, MokoCassiopeia, MokoJGDPC, etc.
mokocli-Template-Dolibarr → MokoCRM, MokoDoliForm, MokoDoliAuth, etc.
mokocli-Template-Generic → MokoISOUpdatePortable, etc.
mokocli-Template-Client → client-clarksvillefurs, client-kiddieland
MokoOnyx is the living reference implementation for Joomla workflows. Template repos are the single source of truth for workflow content. The mokocli repo does NOT store workflow templates -- its sync engine (RepositorySynchronizer.php) clones template repos at runtime to get the latest workflows.
How Sync Works
bulk-repo-sync.yml (API repo)
→ RepositorySynchronizer.php detects platform type
→ Clones the matching template repo to /tmp/
→ Copies .mokogitea/workflows/*.yml from template → target repo
No workflow files are stored in the API repo. This prevents drift.
Template Repos
| Repo | Purpose | Types |
|---|---|---|
mokocli-Template-Joomla |
All Joomla extension types in one repo | plugin, template, module, component, package, library |
mokocli-Template-Dolibarr |
Dolibarr module scaffold | -- |
mokocli-Template-Generic |
Non-platform projects | -- |
mokocli-Template-Client |
Client Joomla sites with media sync | -- |
Standard Workflow Suite
Joomla Repositories (10 workflows)
| Workflow | Trigger | Purpose |
|---|---|---|
auto-release.yml |
PR merge to main (src/ changes) | Stable release: zip, MokoGitea release, version bump, updates.xml |
pre-release.yml |
Manual dispatch | Dev/alpha/beta/rc: patch bump, zip, pre-release |
ci-joomla.yml |
PRs to main | PHP lint, PHPStan, coding standards |
pr-check.yml |
PRs to main | Gate: manifest XML validation, build test |
deploy-manual.yml |
Manual dispatch | SFTP deploy to selected environment |
repo-health.yml |
Weekly schedule / manual | Structure compliance, required files |
update-server.yml |
Weekly schedule / manual | Validate updates.xml format + download URLs |
security-audit.yml |
Weekly + PR (lock file changes) | Dependency vulnerability scanning |
notify.yml |
Workflow completion | ntfy push on release success or failure |
cleanup.yml |
Weekly (Sunday 03:00 UTC) | Delete merged branches + old workflow runs |
Dolibarr Repositories (11 workflows)
Same as Joomla except:
ci-dolibarr.ymlreplacesci-joomla.yml(Dolibarr-specific validation)publish-to-mokodolimods.ymladded (copies src/ to mokodolimods on release)
Generic Repositories (9 workflows)
Same as Joomla minus ci-joomla.yml (no platform-specific CI).
Client Repositories (10 workflows)
Same as Joomla minus update-server.yml (no updates.xml -- clients are sites, not extensions), plus:
sync-media.yml-- Bidirectional SFTP sync forimages/,files/,media/between dev and production (every 6 hours + manual dispatch)
Per-client repo variables required for sync:
| Variable | Purpose |
|---|---|
DEV_SYNC_HOST |
Dev server hostname |
DEV_SYNC_PORT |
Dev SSH port (default 22) |
DEV_SYNC_USERNAME |
Dev server user |
DEV_SYNC_PATH |
Base path on dev |
PROD_SYNC_HOST |
Production server hostname |
PROD_SYNC_PORT |
Production SSH port (default 22) |
PROD_SYNC_USERNAME |
Production server user |
PROD_SYNC_PATH |
Base path on production |
Per-client repo secrets: DEV_SYNC_KEY, PROD_SYNC_KEY
Release Model
Feature branch → PR → merge to main → auto-release.yml (STABLE)
↓
pre-release.yml (manual dispatch for dev/alpha/beta/rc)
- Stable releases trigger automatically on PR merge to main (with
src/changes) - Pre-releases (dev, alpha, beta, rc) are manual via workflow_dispatch
- All releases overwrite the previous release for that channel (no history accumulation)
- Higher releases cascade-delete lower ones (stable deletes all pre-releases, rc deletes beta+alpha+dev, etc.)
Version Bump Policy
| Trigger | Bump | Example |
|---|---|---|
| Stable (PR merge to main) | Minor -- reset patch to 00 | 03.00.07 → 03.01.00 |
| Pre-release (manual) | Patch | 03.00.07 → 03.00.08 |
| Patch rollover (99→00) | Auto-bump minor | 03.00.99 → 03.01.00 |
| Minor rollover (99→00) | Auto-bump major | 03.99.00 → 04.00.00 |
Org-Level Configuration
These secrets and variables are set at the MokoConsulting org level and available to all repos:
Secrets
| Name | Purpose |
|---|---|
MOKOGITEA_TOKEN |
MokoGitea API token for releases, branch operations |
GH_PAT |
GitHub token for mirrors |
DEPLOY_SSH_KEY |
Universal SSH key for SFTP deploys |
DEV_SSH_KEY |
Dev server SSH key |
DEMO_FTP_KEY |
Demo server SFTP key |
Variables
| Name | Value | Purpose |
|---|---|---|
NTFY_URL |
https://ntfy.mokoconsulting.tech |
Notification server |
NTFY_TOPIC |
gitea-releases |
Default notification topic |
DEV_SSH_HOST |
dev.mokoconsulting.tech |
Dev server hostname |
DEV_SSH_PORT |
22 |
Dev server SSH port |
DEV_SSH_USERNAME |
mokoconsulting_dev |
Dev server username |
DEMO_FTP_HOST |
demo.mokoconsulting.tech |
Demo server hostname |
DEMO_FTP_PORT |
22 |
Demo server port |
DEMO_FTP_USERNAME |
mokoconsulting_demo |
Demo server username |
Syncing Workflows
To update workflows across all repos from the canonical template:
# Joomla repos -- sync from unified template
for REPO in MokoOnyx MokoCassiopeia MokoJGDPC MokoJoomHero MokoJoomTOS MokoWaaS MokoWaaSAnnounce MokoDPCalendarAPI; do
cd /a/$REPO
rm -f .mokogitea/workflows/*.yml
cp /a/mokocli-Template-Joomla/.mokogitea/workflows/*.yml .mokogitea/workflows/
git add .mokogitea/workflows/ && git commit -m "chore: sync workflows" && git push
done
# Dolibarr repos -- sync from Dolibarr template
for REPO in MokoCRM MokoDoliForm MokoDoliAuth MokoDolibarr ...; do
cd /a/$REPO
rm -f .mokogitea/workflows/*.yml
cp /a/mokocli-Template-Dolibarr/.mokogitea/workflows/*.yml .mokogitea/workflows/
git add .mokogitea/workflows/ && git commit -m "chore: sync workflows" && git push
done
# Client repos -- sync from Client template
for REPO in client-clarksvillefurs client-kiddieland; do
cd /a/$REPO
rm -f .mokogitea/workflows/*.yml
cp /a/mokocli-Template-Client/.mokogitea/workflows/*.yml .mokogitea/workflows/
git add .mokogitea/workflows/ && git commit -m "chore: sync workflows" && git push
done
Changelog
| Date | Change |
|---|---|
| 2026-05-02 | Initial standardization: 10-workflow Joomla suite from MokoOnyx |
| 2026-05-02 | Added pre-release.yml for manual dev/alpha/beta/rc builds |
| 2026-05-02 | Removed auto-deploy (deploy is manual only) |
| 2026-05-02 | Modernized Dolibarr/Generic/Client templates to match |
| 2026-05-02 | Added workflows to all 22 Dolibarr production repos |
| 2026-05-02 | Moved canonical source from API repo to template repos |
| 2026-05-02 | Added sync-media.yml to Client template (bidirectional SFTP) |
| 2026-05-02 | Deployed workflows to client repos (clarksvillefurs, kiddieland) |
| 2026-05-02 | Consolidated 6 Joomla template repos → mokocli-Template-Joomla |
| 2026-05-02 | Deleted individual template repos (Plugin, Template, Module, Component, Package, Library) |
| 2026-05-02 | Cascade delete: higher releases auto-delete lower pre-release channels |
| 2026-05-02 | Release naming: includes extension element name |
| 2026-05-02 | Stable releases overwrite (not append) |
| 2026-05-04 | Removed updates.xml + update-server.yml from client repos |
| 2026-05-04 | Added client.tf definition in mokocli |
| 2026-05-05 | Version policy: stable=minor bump, pre-release=patch bump |
Related
- ARCHITECTURE -- Platform scripts architecture
- MINIFICATION -- Asset minification pipeline
- client-repos -- Client repository standards
- Documentation-Standards -- Documentation conventions
Repo: mokocli · mokocli wiki
| Field | Value |
|---|---|
| Minimum Version | 04.07.00 |
| Platform | all |
| Applies To | All repositories |
| Revision | Date | Author | Description |
|---|---|---|---|
| 1.0 | 2026-05-09 | Moko Consulting | Initial version |
- AUTO-CREATE-ORG-PROJECTS
- Branching-Strategy
- CLI-AUTOMATION
- Coding-Standards
- DEPLOY-SCRIPTS
- DOLIBARR-MODULE-IDS
- DRY-RUN-PATTERN
- Documentation-Standards
- File-Header-Standards
- JOOMLA-SYNC
- LEGAL-DOC-GENERATOR-WEB-README
- MONITORING-SCRIPTS
- NEW-SCRIPTS
- QUICKSTART-ORG-PROJECTS
- RELEASE-MANAGEMENT
- Version-Standard
- WIKI-STANDARDS
- WORKFLOW-STANDARDS
- api-maintenance-index
- api-plugin-index
- api-tests-index
- api-tests-sample-index
- automation-README
- automation-branch-version-automation
- automation-repo-cleanup
- client-repos
- features
- operations
- reference
- standards-mokostandards-file-spec
- templates-client-waas
- templates-dolibarr
- templates-generic
- templates-mcp
- unnamed
- workflows-README
- workflows-auto-release
- workflows-branch-protection
- workflows-build-release
- workflows-cascade-dev
- workflows-changelog-management
- workflows-demo-deployment
- workflows-dev-branch-tracking
- workflows-dev-deployment
- workflows-index
- workflows-release-system
- workflows-renovate
- workflows-reusable-workflows
- workflows-rs-deployment
- workflows-secret-scanning
- workflows-shared-workflows
- workflows-standards-compliance
- workflows-static-analysis
- workflows-sub-issue-management
- workflows-update-server
- workflows-workflow-architecture
- workflows