Moko Consulting

Open-source software for Joomla, Gitea, and web platforms. Home of MokoSuite, MokoGitea, and MokoCLI.

Tennessee
releases/ci-cd-overview.-

CI/CD Overview

Gitea Actions workflows and automation for MokoConsulting projects.

Workflow Engine

All CI/CD runs on Gitea Actions (GitHub Actions compatible) with runners hosted on the git server.

Shared Workflows

auto-release.yml

Triggers on version tag push. Builds and publishes Joomla extensions:

on:
  push:
    tags: ['v*']

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Validate
        run: make validate
      - name: Build
        run: make build
      - name: Create Release
        uses: actions/create-release@v1
        with:
          files: dist/*.zip

ci-joomla.yml

Runs on PRs targeting main. Validates PHP code:

  • PHP lint (php -l)
  • PHP CodeSniffer (Joomla standard)
  • PHPStan (level 6+)
  • PHPUnit tests

client-release.yml

Builds client theme packages. Triggers on tags in client repos:

  • Packages theme into ZIP
  • Creates Gitea release
  • Generates SHA-256 checksum
  • Updates the update server XML

ci-client.yml

Validates client theme packages on PRs:

  • PHP lint on template overrides
  • CSS validation
  • Manifest validation

mokoplatform CLI Validators

PHP CLI tools in mokoplatform/validate/ that run during CI:

Validator Purpose
check_manifest.php Validates .mokogitea/manifest.xml structure
check_changelog.php Validates CHANGELOG.md format (Keep a Changelog)
check_language.php Validates Joomla .ini language files (syntax, missing keys)

Run locally via make validate — same checks as CI.

Runner Infrastructure

  • 4 Gitea Actions runners on the git server
  • Each runner: Docker container with 8GB memory limit
  • Runner labels: ubuntu-latest
  • Registration managed via Gitea admin panel

Secrets

Secret Scope Purpose
GITEA_TOKEN Organization API access for releases
GITHUB_TOKEN Organization GitHub mirror operations
Client deploy keys Per-repo Push access to client repos