Workflows de CI e E2E¶
Esta pagina documenta a superficie de GitHub Actions para desenvolvedores do
proxbox-api: validacao rapida, smoke tests de imagens Docker, matriz E2E com
NetBox e publicacao em etapas.
Mapa dos workflows¶
| Workflow | Gatilho | Finalidade |
|---|---|---|
.github/workflows/ci.yml |
Push, pull request, release, dispatch manual | Roda checagens principais e a matriz E2E Docker com NetBox + Proxmox. |
.github/workflows/publish-testpypi.yml |
Tag de versao, GitHub release, dispatch manual | Publica versoes imutaveis no TestPyPI, candidatos PyPI, releases finais PyPI, imagens Docker e E2E pos-publicacao. |
.github/workflows/docker-hub-publish.yml |
Workflow reutilizavel / dispatch manual | Constroi e publica variantes raw, nginx e granian da imagem Docker. |
.github/workflows/release-docker-verify.yml |
Release / dispatch manual | Baixa as tags Docker publicadas e verifica startup dos conteineres. |
.github/workflows/docs.yml |
Mudancas de docs em main / PR | Constroi e publica o site MkDocs. |
.github/workflows/nightly-schema-refresh.yml |
Agendamento / dispatch manual | Atualiza schemas Proxmox gerados e abre PR quando houver mudanca. |
Fluxo do CI¶
flowchart TD
Push[Push / PR / execucao manual]
Core[test\nruff + ty + compile + pytest]
Py311[test-py311-floor\ncompile + pytest core]
Free[test-free-threaded\ncontinue-on-error]
Bind[Docker bind-host smoke\nraw + granian]
Setup[setup\ngera matriz E2E]
BuildNB[build-netbox-image\nso se pull do registro falhar]
E2E[e2e-docker\nmatriz transporte x versao NetBox]
Push --> Core
Push --> Py311
Push --> Free
Push --> Bind
Push --> Setup
Setup --> BuildNB
Core --> E2E
Setup --> E2E
BuildNB --> E2E
Os jobs E2E tentam baixar primeiro a imagem publica do NetBox. Eles so baixam o artefato de imagem construido a partir do codigo-fonte quando esse pull falha.
Stack E2E¶
O ci.yml sobe uma stack real e verifica que o proxbox-api consegue
autenticar, configurar endpoints do NetBox e rodar testes de sincronizacao em
todos os transportes suportados.
flowchart LR
GA[GitHub Actions runner]
subgraph Stack[Docker network: proxbox-e2e]
NB[Container NetBox\nnetbox-proxbox instalado]
NGINX[nginx HTTPS opcional]
API[Container proxbox-api\ntarget raw, nginx ou granian]
PM[Container mock Proxmox\nproxmox-sdk:latest]
PG[(PostgreSQL)]
RD[(Redis)]
end
GA --> NB
GA --> API
GA --> PM
NB --> PG
NB --> RD
API -->|REST NetBox| NB
API -->|API Proxmox| PM
NGINX --> NB
Regras importantes do E2E:
- A prontidao do NetBox aguarda ate 20 minutos por migracoes/indexacao.
/api/status/precisa estar pronto antes de configurar tokens e endpoints.- Testes Docker com mock Proxmox usam o marker
mock_http. - A passagem em processo com
MockBackendroda separadamente com o markermock_backend. - Eventos de release rodam modos
devepypidonetbox-proxbox; CI normal de push/PR usa o modo de desenvolvimento.
Validacao de release¶
sequenceDiagram
participant Tag as Tag de versao
participant WF as publish-testpypi.yml
participant TP as TestPyPI
participant PY as PyPI
participant DH as Docker Hub
participant E2E as Stack E2E NetBox
Tag->>WF: vX.Y.Z ou vX.Y.Z.postN
WF->>WF: Validar pyproject + uv.lock + tag
WF->>TP: Publicar proxbox-api
WF->>TP: Reinstalar versao exata em Python 3.11, 3.12, 3.13
WF->>WF: Rodar lint, tipos, compile, import, schema e pytest
Tag->>WF: vX.Y.ZrcN, release event, ou publish_target=pypi
WF->>E2E: Rodar E2E pre-publicacao com dependencias dev
WF->>PY: Publicar proxbox-api
WF->>PY: Reinstalar pacote exato
WF->>DH: Publicar imagens raw, nginx, granian
WF->>E2E: Rodar E2E pos-publicacao com pacote + imagem publicados
Uploads de pacote intencionalmente nao usam twine --skip-existing. Se alguma
validacao falhar depois do upload, publique uma versao fix-forward:
vX.Y.Z.postN para TestPyPI ou correcoes pos-release, e vX.Y.ZrcN para novas
tentativas de release candidate no PyPI.