Skip to content

CI, E2E e release por tag - #1

Merged
blackfoxsoftware merged 3 commits into
devfrom
ci/pipeline-e-release
Sep 1, 2026
Merged

CI, E2E e release por tag#1
blackfoxsoftware merged 3 commits into
devfrom
ci/pipeline-e-release

Conversation

@blackfoxsoftware

Copy link
Copy Markdown
Owner

O que muda

  • CI (.github/workflows/ci.yml): toda PR e todo push na dev, em windows-latest — typecheck, lint, formatação, unidade, e o E2E do Playwright contra o app Electron compilado, com o relatório subindo como artefato.
  • Regra das branches: um job falha a PR que aponta para a main sem vir da dev.
  • patchnotes.json: as notas de cada versão, escritas à mão e em português, com validação rígida (semver, ordem decrescente, datas reais, categorias conhecidas, itens de uma linha). Entra no npm run check e no CI.
  • Release (.github/workflows/release.yml): sai do merge da dev na main. Valida as notas, roda o CI inteiro no estado que vai virar tag, cria a tag anotada v<versao> e publica a release com o corpo gerado do patchnotes.json. Se a tag já existe, o run não faz nada.
  • README com a seção do fluxo, e um template de PR com o checklist.

Publicar uma versão passa a ser: subir o version do package.json e escrever as notas dela no patchnotes.json, na mesma PR.

Checklist

  • A PR aponta para a dev
  • npm run check passa (typecheck, lint, formatação, testes e patchnotes.json)
  • patchnotes.json com a entrada de 0.1.0
  • version do package.json subido — não; 0.1.0 continua sendo a versão a lançar

Dois workflows. O CI roda em toda PR e em todo push na dev, em windows-latest
— o alvo é Windows: os testes lidam com caminhos do Windows e o E2E sobe o
Electron de verdade. Ele faz typecheck, lint, formatação, os testes de unidade
e a suíte Playwright, e tem um job que cobra a regra das branches: PR para a
main só pode vir da dev.

O release sai do merge da dev na main. A versão vem do package.json e as notas
vêm do patchnotes.json, novo aqui: escritas à mão, em português, e validadas
com rigor (semver, ordem, datas reais, categorias conhecidas, itens de uma
linha) porque um erro ali só apareceria na hora de publicar. Se a tag v<versao>
já existe, o run não faz nada — um push na main que não bumpou a versão não
republica nem sobrescreve release alguma. Publicar uma versão é subir o version
do package.json e escrever as notas dela na mesma PR.
Os três rulesets que passam a aplicar o fluxo do lado do GitHub: a main só
por PR com o CI verde e merge commit (para guardar o histórico da dev), a dev
sem force-push e sem remoção, e as tags de versão imutáveis.

Nenhum deles tem exceção de bypass, nem para o dono do repositório, e nenhum
atrapalha o release: o workflow cria a tag, e criar não é mover nem apagar.
O CONTRIBUTING traz o fluxo, o ambiente — inclusive como mexer no app inteiro
sem WSL instalado, pelo modo de demonstração — e as convenções que a revisão
cobra: comentário explica o porquê, contrato IPC é a fronteira, seletor de
teste sai de papel e nome acessível.

O SECURITY descreve o modelo de confiança do app (desktop local, renderer sem
Node, todo canal validado com Zod nas duas direções) e lista o que conta e o
que não conta como vulnerabilidade, para não gastar o tempo de quem reporta:
bug do wslc ou do SDK é da Microsoft, e o app executar o comando que o usuário
digitou é a função dele.

Código de Conduta: Contributor Covenant 2.1, tradução oficial em pt-BR.

Templates de issue em formulário. O de bug pergunta o motor, a versão do WSL e
se o caso reproduz no modo de demonstração — essa última já separa problema de
UI de problema de container. O de ideia pede o incômodo antes da solução e se o
wslc suporta aquilo, porque a UI não inventa o que a CLI e o SDK não expõem.
@blackfoxsoftware
blackfoxsoftware merged commit d54bd73 into dev Sep 1, 2026
3 checks passed
@blackfoxsoftware
blackfoxsoftware deleted the ci/pipeline-e-release branch September 1, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant