agentee

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 sh

Saí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: hardware

Mantenha 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/*.png

A 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.txt

fab 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.

Melhorar este guia · Markdown para agentes