制造
在 CI 中检查设计
每次推送时运行 agentee check,出错时让构建失败,保持仿真结果最新,并将板厂文件包附加到发布版本。
纯文本的设计属于 git,git 中的设计可以在每次推送时像代码一样进行检查。agentee check 在项目无错误时退出 0,有错误时退出 1,文件无法加载时退出 2,因此可以直接放入 CI。
检查任务
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/只有当任务导入元件时才需要 KiCad 库;已经包含符号和封装的项目可以在没有它们的情况下进行检查。将 check 指向项目目录,或在内部运行。
通过从发布标签而不是最新版本安装来固定版本,以获得可复现的结果:
- run: curl -fsSL https://agentee.sh/install.sh | AGENTEE_VERSION=v0.1.0 sh机器可读输出
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
}每个诊断都携带其文件、项目、位置和严重性,布局诊断还携带其规则 id。这足以注释拉取请求,或在希望将警告视为错误的项目中因警告而失败。规则也可以在电路板本身通过 [drc] severity 提升为错误,这将策略保留在设计中而不是 CI 脚本中。
CI 中的仿真
检查从不运行仿真。每个结果记录规范、其看到的铜和叠层的哈希值,当它们不再匹配时检查会发出警告。在没有 GPU 的 CI 运行器上,这是有用的部分:移动射频走线的拉取请求会在 FDTD 结果上获得过期警告,测量该结果的接口会直接失败。
直流压降、热和逻辑仿真足够便宜,可以在运行器有 GPU 的 CI 中运行,逻辑仿真甚至不需要 GPU:
- run: agentee sim counter
working-directory: hardware将 FDTD 运行保留在工作站上并提交其结果,以便 CI 根据实际运行的仿真检查设计。
每个拉取请求的渲染
- 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渲染无头运行,无需显示器或 GPU,因此硬件更改的审阅者可以看到电路板以及差异。
发布时的板厂包
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 会拒绝,因此损坏设计上的标签会失败,而不是发布 Gerber。丝印中的水印携带构建包所基于的提交;来自包含未提交更改的树的构建会显示 -dirty。