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
| Input | Tipo | Padrão | Obrigatório | Descrição |
|---|---|---|---|---|
tag-name | string | -- | Sim | Tag do release (ex: 1.2.3) |
zip-name | string | -- | Sim | Nome do arquivo sem versão (ex: wp-plugin-my-project) |
has-ui | boolean | false | Não | Build de UI assets com npm |
has-strauss | boolean | false | Não | Executa Strauss para vendor prefixing |
needs-satis-auth | boolean | false | Não | Configura auth HTTP Basic para privatesatis |
ui-check-file | string | 'assets/dist/app.js' | Não | Arquivo para verificar se o build de UI foi bem-sucedido |
node-version | string | '22' | Não | Versão do Node.js |
php-version | string | '8.4' | Não | Versão do PHP |
php-extensions | string | 'mbstring, xml, json, curl' | Não | Extensões PHP |
extra-zip-excludes | string | '' | Não | Patterns adicionais para excluir do ZIP (separados por espaço) |
Secrets
| Secret / Variable | Tipo | Descrição |
|---|---|---|
PRIVATESATIS_DISPATCH_TOKEN | org secret | PAT com scope repo no repositório my-satis-repo |
PRIVATESATIS_PASSWORD | org secret | Senha HTTP Basic para privatesatis.middag.com.br |
PRIVATESATIS_USERNAME | org variable | Usuário HTTP Basic para privatesatis.middag.com.br |
Permissions
yaml
permissions:
contents: writeNecessário para fazer upload de assets no GitHub Release.
Job: build-and-upload
Executa em ubuntu-latest:
- Checkout na tag do release (
ref: tag-name). - Setup PHP com a versão e extensões configuradas.
- Setup Node.js (se
has-ui). - Build UI assets —
cd ui && npm ci && npm run build(sehas-ui). - Verifica UI assets — confirma que o arquivo de verificação existe (se
has-ui). - Configura auth Satis — escreve
auth.jsoncom credenciais HTTP Basic (seneeds-satis-auth). - Composer install — com
--no-devou com dev dependencies quando Strauss é necessário. - Strauss —
composer strausspara vendor prefixing (sehas-strauss). - Reinstala sem dev — remove dev dependencies após Strauss e otimiza autoloader (se
has-strauss). - Strip tokens — executa
scripts/strip-lock-tokens.phppara remover tokens docomposer.lock(se existir). - Build dist archive — cria ZIP excluindo arquivos de desenvolvimento.
- Upload ao GitHub Release — via
softprops/action-gh-release@v3. - Trigger privatesatis rebuild — dispara
repository_dispatchno repositóriomy-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.jsonExemplo 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