name: KiBot # Checks every board (hardware/*/*.kicad_pro): ERC, DRC, schematic PDF, # gerbers, drill, pick and place, BOM; the outputs are kept as an artifact. # Adapted from LVSolarBuck (runner label kicad10_auto). Without a board yet # the job ends right away. on: push: branches: [main] paths: - 'hardware/**' - 'kibot.yaml' - '.gitea/workflows/kibot.yml' pull_request: paths: - 'hardware/**' - 'kibot.yaml' workflow_dispatch: jobs: boards: runs-on: kicad10_auto steps: - uses: actions/checkout@v4 - name: Find boards id: boards run: | found=$(find hardware -mindepth 2 -maxdepth 2 -name '*.kicad_pro' | sort | tr '\n' ' ') echo "projects=$found" >> "$GITHUB_OUTPUT" if [ -z "$found" ]; then echo "No KiCad project under hardware/ yet."; fi - name: KiBot if: steps.boards.outputs.projects != '' run: | for pro in ${{ steps.boards.outputs.projects }}; do dir=$(dirname "$pro"); board=$(basename "$dir") echo "== $board" (cd "$dir" && kibot -c "$GITHUB_WORKSPACE/kibot.yaml" -d "$GITHUB_WORKSPACE/Generated/$board" -v) \ || echo "::warning::KiBot reported problems for $board" done - name: Keep the outputs if: steps.boards.outputs.projects != '' uses: https://github.com/christopherHX/gitea-upload-artifact@v4 with: name: kibot-outputs path: Generated