Skip to content

Commit c0a35ef

Browse files
Enhance DRC and 3D rendering workflow in GitHub Actions
1 parent 1cf3762 commit c0a35ef

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

.github/workflows/drc-3d-render.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,81 @@ jobs:
4747
echo "Found projects: $PROJECTS"
4848
echo "projects=$PROJECTS" >> $GITHUB_OUTPUT
4949
fi
50+
51+
- name: Process each KiCad project
52+
run: |
53+
# Check if any projects were found
54+
if [ -z "${{ steps.find_projects.outputs.projects }}" ]; then
55+
echo "No KiCad projects found to process"
56+
exit 0
57+
fi
58+
59+
for PROJECT_PATH in ${{ steps.find_projects.outputs.projects }}; do
60+
echo "Processing project: $PROJECT_PATH"
61+
PROJECT_NAME=$(basename "$PROJECT_PATH")
62+
KICAD_DIR="$PROJECT_PATH/KiCad"
63+
ASSETS_DIR="$PROJECT_PATH/assets"
64+
65+
# Find the main project file (without .kicad_pro extension)
66+
PROJECT_FILE=$(find "$KICAD_DIR" -name "*.kicad_pro" -exec basename {} .kicad_pro \; | head -1)
67+
68+
if [ -n "$PROJECT_FILE" ]; then
69+
echo "Found KiCad project: $PROJECT_FILE"
70+
71+
# Change to the KiCad directory for processing
72+
cd "$KICAD_DIR"
73+
74+
# Run DRC
75+
echo "Running DRC for $PROJECT_FILE..."
76+
pcb_drc_result=0
77+
/usr/bin/docker run --rm -v "$PWD:/workspace" sparkengineering/kicad-action:latest \
78+
--kicad_pcb "$PROJECT_FILE.kicad_pcb" --pcb_drc || pcb_drc_result=$?
79+
80+
# Generate 3D render
81+
echo "Generating 3D render for $PROJECT_FILE..."
82+
pcb_3d_result=0
83+
/usr/bin/docker run --rm -v "$PWD:/workspace" sparkengineering/kicad-action:latest \
84+
--kicad_pcb "$PROJECT_FILE.kicad_pcb" --pcb_3d --pcb_3d_output "temp_3d.png" || pcb_3d_result=$?
85+
86+
# Create assets directory and move 3D render
87+
if [ $pcb_3d_result -eq 0 ] && [ -f "temp_3d.png" ]; then
88+
echo "Moving 3D render to assets directory..."
89+
mkdir -p "../../assets"
90+
mv "temp_3d.png" "../../assets/default.png"
91+
echo "3D render saved to $PROJECT_PATH/assets/default.png"
92+
fi
93+
94+
# Go back to workspace root
95+
cd "$GITHUB_WORKSPACE"
96+
97+
# Upload artifacts for this project
98+
if [ $pcb_drc_result -ne 0 ] && [ -f "$KICAD_DIR/drc.rpt" ]; then
99+
echo "Uploading DRC report for $PROJECT_NAME"
100+
cp "$KICAD_DIR/drc.rpt" "drc_${PROJECT_NAME}.rpt"
101+
fi
102+
103+
if [ -f "$PROJECT_PATH/assets/default.png" ]; then
104+
echo "Uploading 3D render for $PROJECT_NAME"
105+
cp "$PROJECT_PATH/assets/default.png" "render_${PROJECT_NAME}.png"
106+
fi
107+
108+
else
109+
echo "No KiCad project file found in $KICAD_DIR"
110+
fi
111+
done
112+
113+
# Upload DRC reports only if DRC failed
114+
- name: Upload DRC reports
115+
uses: actions/upload-artifact@v4
116+
if: ${{ failure() }}
117+
with:
118+
name: drc-reports
119+
path: drc_*.rpt
120+
121+
# Upload 3D renders if generation succeeded
122+
- name: Upload 3D renders
123+
uses: actions/upload-artifact@v4
124+
if: ${{ !cancelled() }}
125+
with:
126+
name: 3d-renders
127+
path: render_*.png

0 commit comments

Comments
 (0)