GitHub Actions
O bloco services: vem do README do core, e o CI do próprio projeto usa a imagem assim: o job imagem-publicada sobe a imagem como service e a confere por http://127.0.0.1:8790. A auditoria de 2026-10-08 não reproduziu esse uso num workflow. O que ela provou: a imagem fica healthy em 1 a 2 s, responde no /saude e gera a mesma pessoa que as outras portas.
A imagem como service
services:
botai:
image: ghcr.io/piluvitu/botai:0.4.1
ports: ['8790:8790']
Num job inteiro, os passos rodam no runner e falam com o service por 127.0.0.1:8790, como no CI do projeto:
jobs:
testes:
runs-on: ubuntu-24.04
services:
botai:
image: ghcr.io/piluvitu/botai:0.4.1
ports: ['8790:8790']
steps:
- name: Botaí no ar
run: curl -fsS http://127.0.0.1:8790/saude
- name: Uma pessoa para o teste
run: curl -fsS 'http://127.0.0.1:8790/pessoa?semente=42&hoje=2026-10-05' > pessoa.json
Fixe a versão da imagem: ghcr.io/piluvitu/botai:0.4.1. Não existe tag de minor (veja Tags). As rotas estão em API HTTP.
Sem service
O Botaí entra no job por outras duas portas:
-
npxcom a versão exata, num job que tenha Node. Onpxfunciona onde houver Node (provado fora do Actions):- name: Pessoas para o bancorun: npx -y @pilutech/botai-core@0.4.1 pessoas -n 1000 --semente carga --hoje 2026-10-05 --formato sql > pessoas.sql -
O binário, num runner sem Node: veja install.sh e Download e verificação.
Para semear o banco com o SQL, veja Receitas de banco.
O fixture do Playwright no CI
Com o fixture botai, o relatório do Playwright traz a pessoa de cada teste: as anotações botai-semente e botai-hoje em todo teste que usa o fixture, e o anexo botai-pessoa.json em cada falha inesperada. Veja Reproduzir uma falha.