Skip to content

WordPress Plugin CI

Pipeline de integração contínua reutilizável para plugins WordPress. Executa verificações de qualidade de código PHP e, opcionalmente, build e lint do front-end (TypeScript/Vite).

Trigger

yaml
on:
  workflow_call:

Chamado via uses: a partir do workflow de CI do repositório do plugin.

Inputs

InputTipoPadrãoDescrição
php-versionsstring'["8.3", "8.4"]'Array JSON com versões do PHP para a matrix
node-versionstring'22'Versão do Node.js para builds de UI
has-uibooleanfalseHabilita build do diretório ui/ com npm
has-testsbooleanfalseExecuta composer test
has-phpstanbooleantrueExecuta composer check:stan (PHPStan)
has-cs-fixerbooleantrueExecuta composer check:style (PHP CS Fixer)
has-rectorbooleanfalseExecuta composer check:rector (Rector)
php-extensionsstring'mbstring, xml'Extensões PHP a instalar
needs-github-app-authbooleanfalseGera token GitHub App para repos Composer privados (ex: my-package)

Secrets

Necessários apenas quando needs-github-app-auth: true:

Secret / VariableTipoDescrição
PRIVATESATIS_BOT_APP_IDorg variableID do GitHub App privatesatis-bot
PRIVATESATIS_BOT_PRIVATE_KEYorg secretChave privada PEM do GitHub App

Jobs

php — PHP Matrix

Executa em ubuntu-latest para cada versão da matrix PHP:

  1. Checkout do código.
  2. Gera token GitHub App (se needs-github-app-auth).
  3. Configura autenticação Composer/Git para repos privados (se needs-github-app-auth).
  4. Setup PHP com as extensões configuradas.
  5. Instala dependências Composer (composer install --no-interaction --prefer-dist).
  6. Check code stylecomposer check:style (se has-cs-fixer).
  7. PHPStancomposer check:stan (se has-phpstan).
  8. Rectorcomposer check:rector (se has-rector).
  9. Testescomposer test (se has-tests).

ui — UI Build

Executa apenas se has-ui: true:

  1. Checkout do código.
  2. Setup Node.js com cache de npm apontando para ui/package-lock.json.
  3. Instala dependênciasnpm ci no diretório ui/.
  4. Type checknpx tsc --noEmit.
  5. Lintnpm run lint.
  6. Buildnpm run build.

Exemplo de uso

yaml
# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  ci:
    uses: middag-io/.github-private/.github/workflows/wp-plugin-ci.yml@workflows-v1
    with:
      has-phpstan: true
      has-cs-fixer: true
      has-tests: true
      has-ui: true
      needs-github-app-auth: true
    secrets: inherit

Configuração mínima (sem UI, sem testes)

yaml
jobs:
  ci:
    uses: middag-io/.github-private/.github/workflows/wp-plugin-ci.yml@workflows-v1
    secrets: inherit

Os defaults já habilitam PHPStan e CS Fixer.

MIDDAG Tecnologia