Производство
Проверка проектов в CI
Запуск проверки agentee при каждом push, сбой сборки при ошибках, актуальные результаты симуляций и прикрепление пакета для производства к релизу.
Проект в виде обычного текста должен храниться в 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
}Каждый диагностический вывод содержит файл, элемент, место и уровень серьёзности, а диагностические выводы топологии платы содержат идентификатор правила. Этого достаточно, чтобы аннотировать pull request или проваливать предупреждения в проекте, где они считаются ошибками. Правило также можно повысить до ошибки в самой плате с помощью [drc] severity, что сохраняет политику в проекте, а не в скрипте CI.
Симуляции в CI
Проверка никогда не запускает симуляцию. Каждый результат записывает хеш спецификации, меди, которую он видел, и стека слоёв, и проверка предупреждает, если они больше не совпадают. На CI-раннере без GPU это полезная часть: pull request, который перемещает трассу СВЧ, получает предупреждение об устаревании для результата FDTD, и интерфейс, который измеряет этот результат, проваливается полностью.
Симуляции падения постоянного тока, тепловые и логические достаточно дёшевы, чтобы запускать их в CI, если у раннера есть GPU, а логические симуляции вообще не требуют GPU:
- run: agentee sim counter
working-directory: hardwareОставляйте запуски FDTD на рабочей станции и коммитьте их результаты, чтобы CI проверял проект по симуляциям, которые действительно были запущены.
Рендеры при каждом 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Рендеринг выполняется в безголовом режиме, без дисплея или 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.txtfab отказывается, пока в топологии платы есть ошибки, поэтому тег на сломанном проекте проваливается, а не отправляет Gerber. Водяной знак на шелкографии содержит коммит, из которого был собран пакет; сборка из дерева с незакоммиченными изменениями указывает -dirty.