-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from PatrickBaus/add_CI
Add CI
- Loading branch information
Showing
8 changed files
with
579 additions
and
162 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,233 @@ | ||
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' | ||
- 'footprints.pretty/*' | ||
- 'footprints_project_specific.pretty/*' | ||
- 'libraries/*' | ||
- '.github/workflows/ci.yml' | ||
- 'config.kibot.yaml' | ||
- 'bom.ini' | ||
# Ignore the push event when creating tags | ||
tags-ignore: | ||
- 'v?[0-9]+.[0-9]+.[0-9]+' | ||
release: | ||
types: | ||
- published | ||
|
||
env: | ||
SCHEMATIC_FILE: 6632B_binding_posts.kicad_sch | ||
PCB_FILE: 6632B_binding_posts.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 | ||
|
||
- name: Test for correct git tag | ||
if: github.ref_type == 'tag' && github.ref_name != steps.extract_sch_revision.outputs.value | ||
run: | | ||
echo "::error::Revision number of the schematic/PCB (${{ steps.extract_sch_revision.outputs.value }}) does not match the Github tag (${{ github.ref_name }})." | ||
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_dk8 | ||
with: | ||
config: ${{ env.KIBOT_CONFIG }} | ||
schema: ${{ env.SCHEMATIC_FILE }} | ||
dir: generated | ||
skip: run_drc | ||
targets: __NONE__ # Only run preflights | ||
|
||
- name: Upload results | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ERC_Output | ||
path: generated | ||
retention-days: 7 | ||
|
||
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_dk8 | ||
with: | ||
config: ${{ env.KIBOT_CONFIG }} | ||
board: ${{ env.PCB_FILE }} | ||
dir: generated | ||
skip: run_erc | ||
targets: __NONE__ # Only run preflights | ||
|
||
- name: Upload results | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: DRC_Output | ||
path: generated | ||
retention-days: 7 | ||
|
||
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_dk8 | ||
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@v4 | ||
with: | ||
name: manufacturing_files-bom-${{ matrix.variant }} | ||
path: bom_files_compressed | ||
retention-days: 7 | ||
|
||
- name: Upload schematic files as artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: manufacturing_files-schematics-${{ matrix.variant }} | ||
path: schematics | ||
retention-days: 7 | ||
|
||
- name: Upload Gerber files as artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: manufacturing_files-gerber-${{ matrix.variant }} | ||
path: gerber_files_compressed | ||
retention-days: 7 | ||
|
||
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@v4 | ||
with: | ||
path: manufacturing_files | ||
pattern: manufacturing_files-* | ||
merge-multiple: true | ||
|
||
- 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_(${{ 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/$(basename ${{ env.SCHEMATIC_FILE }} .kicad_sch)_schematics_${{ needs.tests.outputs.revision }}_(${{ 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/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' | ||
run: | | ||
mv "./manufacturing_files/gerbers_(${{ matrix.variant }}).zip" ${{ needs.tests.outputs.basename }}_gerber_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.zip | ||
gh release upload ${{ github.ref_name }} ${{ needs.tests.outputs.basename }}_gerber_${{ needs.tests.outputs.revision }}_${{ matrix.variant }}.zip#"Gerber files for the ${{ matrix.variant }} variant (zip)" --repo ${{ github.repository }} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
shell: bash |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.