Fabrico
Verificar designs em CI
Executar o agentee check em cada push, falhar a compilação em caso de erros, manter os resultados de simulação atualizados e anexar um pacote de fabrico a uma libertação.
Um design em texto simples pertence ao git, e um design no git pode ser verificado em cada push como código. agentee check termina com 0 quando o projeto está limpo, 1 quando há erros e 2 quando um ficheiro não carrega, pelo que se integra diretamente no CI.
O trabalho de verificação
name: check
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: curl -fsSL https://agentee.sh/install.sh | sh
- run: echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- run: sudo apt-get install -y kicad-symbols kicad-footprints
- run: agentee check hardware/As bibliotecas KiCad só são necessárias se o trabalho importar componentes; um projeto que já contém os seus símbolos e footprints é verificado sem elas. Aponte o check para o diretório do projeto, ou execute-o a partir do interior.
Fixe a versão para resultados reproduzíveis, instalando a partir de uma tag de release em vez da mais recente:
- run: curl -fsSL https://agentee.sh/install.sh | AGENTEE_VERSION=v0.1.0 shSaída legível por máquina
agentee check --json{
"diagnostics": [
{
"at": "via [12.550, 11.000]",
"file": "./lna.pcb.toml",
"item": "lna",
"message": "GND via sits in U1.2 0.175 mm from its edge, its 0.300 mm annulus reaches past the pad under the mask; centre it or use a smaller via",
"rule": "via-annulus-past-pad",
"severity": "warning"
}
],
"errors": 0,
"ok": true,
"warnings": 3
}Cada diagnóstico inclui o ficheiro, o item, o local e a severidade, e os diagnósticos de layout incluem o id da regra. Isso é suficiente para anotar uma pull request, ou para falhar em avisos num projeto que os quer tratar como erros. Uma regra também pode ser elevada a erro na própria placa com [drc] severity, o que mantém a política no design em vez do script de CI.
Simulações no CI
A verificação nunca executa uma simulação. Cada resultado regista um hash da especificação, do cobre que viu e do stackup, e a verificação avisa quando deixam de corresponder. Num runner de CI sem GPU, essa é a parte útil: uma pull request que move uma pista de RF recebe um aviso de obsolescência no resultado FDTD, e uma interface que mede esse resultado falha imediatamente.
As simulações de queda DC, térmicas e de lógica são baratas o suficiente para executar no CI onde o runner tem GPU, e as de lógica não precisam de nenhuma:
- run: agentee sim counter
working-directory: hardwareMantenha as execuções FDTD numa estação de trabalho e commite os respetivos resultados, para que o CI verifique o design contra as simulações que foram realmente executadas.
Renderizações em cada pull request
- run: |
agentee render pcb:main -o main.png --canvas-only
agentee render sch:main -o main-sch.png --canvas-only
working-directory: hardware
- uses: actions/upload-artifact@v4
with:
name: renders
path: hardware/*.pngA renderização executa em modo headless, sem ecrã nem GPU, para que o revisor de uma alteração de hardware veja a placa além da diff.
Pacotes de fabricante em release
on:
push:
tags: ["hw-v*"]
jobs:
fab:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: curl -fsSL https://agentee.sh/install.sh | sh
- run: echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- run: agentee fab pcb:main -o fab/
working-directory: hardware
- env:
GH_TOKEN: ${{ github.token }}
run: gh release create "$GITHUB_REF_NAME" hardware/fab/*.zip hardware/fab/*.csv hardware/fab/fab-notes.txtfab recusa enquanto o layout tiver erros, para que uma tag num design partido falhe em vez de enviar Gerbers. A marca de água na serigrafia contém o commit de que o pacote foi construído; uma construção a partir de uma árvore com alterações não commitadas diz -dirty.