|
47 | 47 | echo "Found projects: $PROJECTS" |
48 | 48 | echo "projects=$PROJECTS" >> $GITHUB_OUTPUT |
49 | 49 | 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