Skip to content

Commit

Permalink
Updated to KiCad 7
Browse files Browse the repository at this point in the history
Added CI pipeline
Fixed trailing whitespaces of MFN and PN labels
Fixed ERC/DRC errors
  • Loading branch information
PatrickBaus committed Nov 3, 2023
1 parent 11e7ff1 commit 33e0ca1
Show file tree
Hide file tree
Showing 34 changed files with 36,873 additions and 96,855 deletions.
16 changes: 16 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
version: 2
updates:
- package-ecosystem: "github-actions"
# Workflow files stored in the
# default location of `.github/workflows`
directory: "/"
schedule:
interval: "daily"
commit-message:
# Prefix all commit messages with "[gha] "
prefix: "[gha] "

- package-ecosystem: "gitsubmodule"
directory: "/"
schedule:
interval: "daily"
215 changes: 215 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
name: "Build manufacturing files"

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches:
- "**"
paths:
- '**.kicad_sch'
- '**.kicad_pcb'
- '.github/workflows/ci.yml'
- 'config.kibot.yaml'
# Ignore the push event when creating tags
tags-ignore:
- 'v?[0-9]+.[0-9]+.[0-9]+'
release:
types:
- published

env:
SCHEMATIC_FILE: phase-frequency_detector.kicad_sch
PCB_FILE: phase-frequency_detector.kicad_pcb
KIBOT_CONFIG: config.kibot.yaml

jobs:
tests:
name: Run tests
runs-on: ubuntu-latest
outputs:
revision: ${{ steps.extract_sch_revision.outputs.value }}
basename: ${{ steps.repo-basename.outputs.value }}

steps:
- name: Download repository
uses: actions/checkout@v4

- name: Parse repository name
id: repo-basename
run: |
echo "value=$(basename ${{ github.repository }})" >> $GITHUB_OUTPUT
shell: bash

- name: Extract schematic revision
id: extract_sch_revision
run: |
echo "value=$(perl -0777 -ne "print /\(title_block.+\(rev \"(.+?)\"\)/sg" ${{ env.SCHEMATIC_FILE }})" >>${GITHUB_OUTPUT}
shell: bash

- name: Extract PCB revision
id: extract_pcb_revision
run: |
echo "value=$(perl -0777 -ne "print /\(title_block.+\(rev \"(.+?)\"\)/sg" ${{ env.PCB_FILE }})" >>${GITHUB_OUTPUT}
shell: bash

- name: Test if the revision number was extracted
if: steps.extract_sch_revision.outputs.value == ''
run: |
echo "::error::Failed to extract revision number from schematic file: ${{ env.SCHEMATIC_FILE }}"
exit 1
shell: bash

- name: Test schematic revision == pcb revision
if: steps.extract_sch_revision.outputs.value != steps.extract_pcb_revision.outputs.value
run: |
echo "::error::Revision number of the schematic (${{ steps.extract_sch_revision.outputs.value }}) does not match PCB (${{ steps.extract_pcb_revision.outputs.value }}) revision."
exit 1
shell: bash

ERC:
name: Run ERC
runs-on: ubuntu-latest
needs: tests

steps:
- name: Download repository
uses: actions/checkout@v4
with:
submodules: true

- name: Run ERC
uses: INTI-CMNB/KiBot@v2_k7
with:
config: ${{ env.KIBOT_CONFIG }}
schema: ${{ env.SCHEMATIC_FILE }}
dir: generated
skip: run_drc
targets: __NONE__ # Only run preflights

- name: Retrieve results
uses: actions/upload-artifact@v3
with:
name: ERC_Output
path: generated

DRC:
name: Run DRC
runs-on: ubuntu-latest
needs: ERC

steps:
- name: Download repository
uses: actions/checkout@v4
with:
submodules: true

- name: Run DRC
uses: INTI-CMNB/KiBot@v2_k7
with:
config: ${{ env.KIBOT_CONFIG }}
board: ${{ env.PCB_FILE }}
dir: generated
skip: run_erc
targets: __NONE__ # Only run preflights

- name: Retrieve results
uses: actions/upload-artifact@v3
with:
name: DRC_Output
path: generated

fabrication_output:
name: 'Produce fabrication outputs'
runs-on: ubuntu-latest
needs: [ERC, DRC]
strategy:
matrix:
variant: [ 'default' ]
steps:
- name: Download repository
uses: actions/checkout@v4
with:
submodules: true

- uses: INTI-CMNB/KiBot@v2_k7
with:
config: ${{ env.KIBOT_CONFIG }}
schema: ${{ env.SCHEMATIC_FILE }}
board: ${{ env.PCB_FILE }}
skip: run_erc,run_drc
variant: ${{ matrix.variant }}
verbose: 0 # use 3 for debugging

- name: Upload bill of materials files as artifact
uses: actions/upload-artifact@v3
with:
name: bom
path: bom_files_compressed

- name: Upload schematic files as artifact
uses: actions/upload-artifact@v3
with:
name: schematics
path: schematics

- name: Upload schematic files as artifact
uses: actions/upload-artifact@v3
with:
name: gerber_files
path: gerber_files_compressed

release:
name: 'Upload manufacturing files to release'
runs-on: ubuntu-latest
needs: [tests, fabrication_output]
if: github.event.action == 'published'
strategy:
matrix:
variant: [ 'default' ]
steps:
- name: Download manufacturing files artifact
uses: actions/download-artifact@v3
with:
path: ./manufacturing_files

- name: Display structure of downloaded files
run: ls -R
working-directory: ./manufacturing_files
shell: bash

- name: Append BOM (bill of materials) as asset
if: github.event.action == 'published'
run: |
mv "./manufacturing_files/bom/bom_(${{ matrix.variant }}).zip" ${{ needs.tests.outputs.basename }}_bom_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.zip
gh release upload ${{ github.ref_name }} ${{ needs.tests.outputs.basename }}_bom_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.zip#"Bill of materials for the ${{ matrix.variant }} variant (zip)" --repo ${{ github.repository }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash

- name: Append schematics as asset
if: github.event.action == 'published'
run: |
mv "./manufacturing_files/schematics/schematics_(${{ matrix.variant }}).pdf" ${{ needs.tests.outputs.basename }}_schematics_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.pdf
gh release upload ${{ github.ref_name }} ${{ needs.tests.outputs.basename }}_schematics_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.pdf#"Schematics for the ${{ matrix.variant }} variant (pdf)" --repo ${{ github.repository }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash

- name: Append position files as asset
if: github.event.action == 'published'
run: |
mv "./manufacturing_files/gerber_files/pos_(${{ matrix.variant }}).zip" ${{ needs.tests.outputs.basename }}_position_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.zip
gh release upload ${{ github.ref_name }} ${{ needs.tests.outputs.basename }}_position_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.zip#"Pick & Place position files for the ${{ matrix.variant }} variant (zip)" --repo ${{ github.repository }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash

- name: Append Gerber files as asset
if: github.event.action == 'published' && matrix.variant == 'default'
run: |
mv "./manufacturing_files/gerber_files/gerbers.zip" ${{ needs.tests.outputs.basename }}_gerber_${{ needs.tests.outputs.revision }}_all.zip
gh release upload ${{ github.ref_name }} ${{ needs.tests.outputs.basename }}_gerber_${{ needs.tests.outputs.revision }}_all.zip#"Gerber files for all variants (zip)" --repo ${{ github.repository }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ Thumbs.db
*.xml
_autosave-*
*-cache.lib
*.lck
fp-info-cache
footprints_project_specific.3dshapes

# KiCAD 6 Files #
*-backups
*.kicad_prl
\#auto_saved_files\#

# KiCAD 7 Files #
\#auto_saved_files#
Loading

0 comments on commit 33e0ca1

Please sign in to comment.