Skip to content

WP Plugin Post-Release

Workflow reutilizável de pós-release para plugins WordPress. Executado após o Release Please criar uma tag: monta o ZIP de distribuição, faz upload no GitHub Release e dispara o rebuild do privatesatis.

Trigger

yaml
on:
  workflow_call:

Normalmente encadeado após o job de release-please quando release_created == 'true'.

Inputs

InputTipoPadrãoObrigatórioDescrição
tag-namestring--SimTag do release (ex: 1.2.3)
zip-namestring--SimNome do arquivo sem versão (ex: wp-plugin-my-project)
has-uibooleanfalseNãoBuild de UI assets com npm
has-straussbooleanfalseNãoExecuta Strauss para vendor prefixing
needs-satis-authbooleanfalseNãoConfigura auth HTTP Basic para privatesatis
ui-check-filestring'assets/dist/app.js'NãoArquivo para verificar se o build de UI foi bem-sucedido
node-versionstring'22'NãoVersão do Node.js
php-versionstring'8.4'NãoVersão do PHP
php-extensionsstring'mbstring, xml, json, curl'NãoExtensões PHP
extra-zip-excludesstring''NãoPatterns adicionais para excluir do ZIP (separados por espaço)

Secrets

Secret / VariableTipoDescrição
PRIVATESATIS_DISPATCH_TOKENorg secretPAT com scope repo no repositório my-satis-repo
PRIVATESATIS_PASSWORDorg secretSenha HTTP Basic para privatesatis.middag.com.br
PRIVATESATIS_USERNAMEorg variableUsuário HTTP Basic para privatesatis.middag.com.br

Permissions

yaml
permissions:
  contents: write

Necessário para fazer upload de assets no GitHub Release.

Job: build-and-upload

Executa em ubuntu-latest:

  1. Checkout na tag do release (ref: tag-name).
  2. Setup PHP com a versão e extensões configuradas.
  3. Setup Node.js (se has-ui).
  4. Build UI assetscd ui && npm ci && npm run build (se has-ui).
  5. Verifica UI assets — confirma que o arquivo de verificação existe (se has-ui).
  6. Configura auth Satis — escreve auth.json com credenciais HTTP Basic (se needs-satis-auth).
  7. Composer install — com --no-dev ou com dev dependencies quando Strauss é necessário.
  8. Strausscomposer strauss para vendor prefixing (se has-strauss).
  9. Reinstala sem dev — remove dev dependencies após Strauss e otimiza autoloader (se has-strauss).
  10. Strip tokens — executa scripts/strip-lock-tokens.php para remover tokens do composer.lock (se existir).
  11. Build dist archive — cria ZIP excluindo arquivos de desenvolvimento.
  12. Upload ao GitHub Release — via softprops/action-gh-release@v3.
  13. Trigger privatesatis rebuild — dispara repository_dispatch no repositório my-satis-repo.

Patterns excluídos do ZIP por padrão

.git/*  .github/*  .cache/*  .claude/*  .aiox-core/*
tests/*  docs/*  docs-site/*  ui/src/*  ui/node_modules/*  node_modules/*
bitbucket-pipelines.yml  .php-cs-fixer.php  .phpstan.neon
.php-rector.php  .phpunit.xml  phpstan.neon  rector.php  auth.json
.release-please-manifest.json  release-please-config.json

Exemplo de uso

yaml
# .github/workflows/release.yml
name: Release

on:
  push:
    branches: [main]

jobs:
  release-please:
    uses: middag-io/.github-private/.github/workflows/release-please.yml@workflows-v1

  post-release:
    needs: release-please
    if: needs.release-please.outputs.release_created == 'true'
    uses: middag-io/.github-private/.github/workflows/wp-plugin-post-release.yml@workflows-v1
    with:
      tag-name: ${{ needs.release-please.outputs.tag_name }}
      zip-name: wp-plugin-my-project
      has-ui: true
      has-strauss: true
      needs-satis-auth: true
    secrets: inherit

MIDDAG Tecnologia