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
| Input | Tipo | Padrão | Descrição |
|---|---|---|---|
php-versions | string | '["8.3", "8.4"]' | Array JSON com versões do PHP para a matrix |
node-version | string | '22' | Versão do Node.js para builds de UI |
has-ui | boolean | false | Habilita build do diretório ui/ com npm |
has-tests | boolean | false | Executa composer test |
has-phpstan | boolean | true | Executa composer check:stan (PHPStan) |
has-cs-fixer | boolean | true | Executa composer check:style (PHP CS Fixer) |
has-rector | boolean | false | Executa composer check:rector (Rector) |
php-extensions | string | 'mbstring, xml' | Extensões PHP a instalar |
needs-github-app-auth | boolean | false | Gera token GitHub App para repos Composer privados (ex: my-package) |
Secrets
Necessários apenas quando needs-github-app-auth: true:
| Secret / Variable | Tipo | Descrição |
|---|---|---|
PRIVATESATIS_BOT_APP_ID | org variable | ID do GitHub App privatesatis-bot |
PRIVATESATIS_BOT_PRIVATE_KEY | org secret | Chave privada PEM do GitHub App |
Jobs
php — PHP Matrix
Executa em ubuntu-latest para cada versão da matrix PHP:
- Checkout do código.
- Gera token GitHub App (se
needs-github-app-auth). - Configura autenticação Composer/Git para repos privados (se
needs-github-app-auth). - Setup PHP com as extensões configuradas.
- Instala dependências Composer (
composer install --no-interaction --prefer-dist). - Check code style —
composer check:style(sehas-cs-fixer). - PHPStan —
composer check:stan(sehas-phpstan). - Rector —
composer check:rector(sehas-rector). - Testes —
composer test(sehas-tests).
ui — UI Build
Executa apenas se has-ui: true:
- Checkout do código.
- Setup Node.js com cache de npm apontando para
ui/package-lock.json. - Instala dependências —
npm cino diretórioui/. - Type check —
npx tsc --noEmit. - Lint —
npm run lint. - Build —
npm 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: inheritConfiguração mínima (sem UI, sem testes)
yaml
jobs:
ci:
uses: middag-io/.github-private/.github/workflows/wp-plugin-ci.yml@workflows-v1
secrets: inheritOs defaults já habilitam PHPStan e CS Fixer.